This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 7.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit b8832f6707efde347d6227236f862c489d743b13 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 7302fe8..6053fea 100644 --- a/java/javax/el/Util.java +++ b/java/javax/el/Util.java @@ -214,11 +214,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()); } /* @@ -226,14 +226,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<Wrapper,MatchResult>(); + Map<Wrapper<T>,MatchResult> candidates = new HashMap<Wrapper<T>,MatchResult>(); int paramCount = paramTypes.length; - for (Wrapper w : wrappers) { + for (Wrapper<T> w : wrappers) { Class<?>[] mParamTypes = w.getParameterTypes(); int mParamCount; if (mParamTypes == null) { @@ -338,9 +338,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(); @@ -402,10 +402,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; @@ -423,7 +423,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 @@ -435,7 +435,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; @@ -445,9 +445,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()) { @@ -591,11 +591,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, @@ -667,10 +667,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<Wrapper>(); + public static List<Wrapper<Method>> wrap(Method[] methods, String name) { + List<Wrapper<Method>> result = new ArrayList<Wrapper<Method>>(); for (Method method : methods) { if (method.getName().equals(name)) { result.add(new MethodWrapper(method)); @@ -679,22 +679,22 @@ class Util { return result; } - public static List<Wrapper> wrap(Constructor<?>[] constructors) { - List<Wrapper> result = new ArrayList<Wrapper>(); + public static List<Wrapper<Constructor<?>>> wrap(Constructor<?>[] constructors) { + List<Wrapper<Constructor<?>>> result = new ArrayList<Wrapper<Constructor<?>>>(); 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) { @@ -702,7 +702,7 @@ class Util { } @Override - public Object unWrap() { + public Method unWrap() { return m; } @@ -722,7 +722,7 @@ class Util { } } - private static class ConstructorWrapper extends Wrapper { + private static class ConstructorWrapper extends Wrapper<Constructor<?>> { private final Constructor<?> c; public ConstructorWrapper(Constructor<?> c) { @@ -730,7 +730,7 @@ class Util { } @Override - public Object unWrap() { + public Constructor<?> unWrap() { return c; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org