You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2013/10/27 21:30:59 UTC
svn commit: r1536194 -
/commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/MethodUtils.java
Author: oheger
Date: Sun Oct 27 20:30:58 2013
New Revision: 1536194
URL: http://svn.apache.org/r1536194
Log:
Generified MethodUtils.
Modified:
commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/MethodUtils.java
Modified: commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/MethodUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/MethodUtils.java?rev=1536194&r1=1536193&r2=1536194&view=diff
==============================================================================
--- commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/MethodUtils.java (original)
+++ commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/MethodUtils.java Sun Oct 27 20:30:58 2013
@@ -32,7 +32,7 @@ import org.apache.commons.logging.LogFac
/**
- * <p> Utility reflection methods focussed on methods in general rather than properties in particular. </p>
+ * <p> Utility reflection methods focused on methods in general rather than properties in particular. </p>
*
* <h3>Known Limitations</h3>
* <h4>Accessing Public Methods In A Default Access Superclass</h4>
@@ -77,7 +77,7 @@ public class MethodUtils {
private static boolean CACHE_METHODS = true;
/** An empty class array */
- private static final Class[] EMPTY_CLASS_PARAMETERS = new Class[0];
+ private static final Class<?>[] EMPTY_CLASS_PARAMETERS = new Class[0];
/** An empty object array */
private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
@@ -101,7 +101,8 @@ public class MethodUtils {
* class via different classloaders will generate non-equal MethodDescriptor
* objects and hence end up with different entries in the map.
*/
- private static final Map cache = Collections.synchronizedMap(new WeakHashMap());
+ private static final Map<MethodDescriptor, Reference<Method>> cache = Collections
+ .synchronizedMap(new WeakHashMap<MethodDescriptor, Reference<Method>>());
// --------------------------------------------------------- Public Methods
@@ -214,7 +215,7 @@ public class MethodUtils {
args = EMPTY_OBJECT_ARRAY;
}
int arguments = args.length;
- Class[] parameterTypes = new Class[arguments];
+ Class<?>[] parameterTypes = new Class[arguments];
for (int i = 0; i < arguments; i++) {
parameterTypes[i] = args[i].getClass();
}
@@ -253,7 +254,7 @@ public class MethodUtils {
Object object,
String methodName,
Object[] args,
- Class[] parameterTypes)
+ Class<?>[] parameterTypes)
throws
NoSuchMethodException,
IllegalAccessException,
@@ -344,7 +345,7 @@ public class MethodUtils {
args = EMPTY_OBJECT_ARRAY;
}
int arguments = args.length;
- Class[] parameterTypes = new Class[arguments];
+ Class<?>[] parameterTypes = new Class[arguments];
for (int i = 0; i < arguments; i++) {
parameterTypes[i] = args[i].getClass();
}
@@ -376,7 +377,7 @@ public class MethodUtils {
Object object,
String methodName,
Object[] args,
- Class[] parameterTypes)
+ Class<?>[] parameterTypes)
throws
NoSuchMethodException,
IllegalAccessException,
@@ -423,10 +424,10 @@ public class MethodUtils {
* @since 1.8.0
*/
public static Object invokeExactStaticMethod(
- Class objectClass,
+ Class<?> objectClass,
String methodName,
Object[] args,
- Class[] parameterTypes)
+ Class<?>[] parameterTypes)
throws
NoSuchMethodException,
IllegalAccessException,
@@ -481,7 +482,7 @@ public class MethodUtils {
* @since 1.8.0
*/
public static Object invokeStaticMethod(
- Class objectClass,
+ Class<?> objectClass,
String methodName,
Object arg)
throws
@@ -524,7 +525,7 @@ public class MethodUtils {
* @since 1.8.0
*/
public static Object invokeStaticMethod(
- Class objectClass,
+ Class<?> objectClass,
String methodName,
Object[] args)
throws
@@ -536,7 +537,7 @@ public class MethodUtils {
args = EMPTY_OBJECT_ARRAY;
}
int arguments = args.length;
- Class[] parameterTypes = new Class[arguments];
+ Class<?>[] parameterTypes = new Class[arguments];
for (int i = 0; i < arguments; i++) {
parameterTypes[i] = args[i].getClass();
}
@@ -573,10 +574,10 @@ public class MethodUtils {
* @since 1.8.0
*/
public static Object invokeStaticMethod(
- Class objectClass,
+ Class<?> objectClass,
String methodName,
Object[] args,
- Class[] parameterTypes)
+ Class<?>[] parameterTypes)
throws
NoSuchMethodException,
IllegalAccessException,
@@ -623,7 +624,7 @@ public class MethodUtils {
* @since 1.8.0
*/
public static Object invokeExactStaticMethod(
- Class objectClass,
+ Class<?> objectClass,
String methodName,
Object arg)
throws
@@ -656,7 +657,7 @@ public class MethodUtils {
* @since 1.8.0
*/
public static Object invokeExactStaticMethod(
- Class objectClass,
+ Class<?> objectClass,
String methodName,
Object[] args)
throws
@@ -668,7 +669,7 @@ public class MethodUtils {
args = EMPTY_OBJECT_ARRAY;
}
int arguments = args.length;
- Class[] parameterTypes = new Class[arguments];
+ Class<?>[] parameterTypes = new Class[arguments];
for (int i = 0; i < arguments; i++) {
parameterTypes[i] = args[i].getClass();
}
@@ -697,11 +698,11 @@ public class MethodUtils {
* @return The accessible method
*/
public static Method getAccessibleMethod(
- Class clazz,
+ Class<?> clazz,
String methodName,
- Class parameterType) {
+ Class<?> parameterType) {
- Class[] parameterTypes = {parameterType};
+ Class<?>[] parameterTypes = {parameterType};
return getAccessibleMethod(clazz, methodName, parameterTypes);
}
@@ -719,9 +720,9 @@ public class MethodUtils {
* @return The accessible method
*/
public static Method getAccessibleMethod(
- Class clazz,
+ Class<?> clazz,
String methodName,
- Class[] parameterTypes) {
+ Class<?>[] parameterTypes) {
try {
MethodDescriptor md = new MethodDescriptor(clazz, methodName, parameterTypes, true);
@@ -770,7 +771,7 @@ public class MethodUtils {
* @return The accessible method
* @since 1.8.0
*/
- public static Method getAccessibleMethod(Class clazz, Method method) {
+ public static Method getAccessibleMethod(Class<?> clazz, Method method) {
// Make sure we have a method to check
if (method == null) {
@@ -802,7 +803,7 @@ public class MethodUtils {
}
String methodName = method.getName();
- Class[] parameterTypes = method.getParameterTypes();
+ Class<?>[] parameterTypes = method.getParameterTypes();
// Check the implemented interfaces and subinterfaces
method =
@@ -833,9 +834,9 @@ public class MethodUtils {
* @param parameterTypes The parameter type signatures
*/
private static Method getAccessibleMethodFromSuperclass
- (Class clazz, String methodName, Class[] parameterTypes) {
+ (Class<?> clazz, String methodName, Class<?>[] parameterTypes) {
- Class parentClazz = clazz.getSuperclass();
+ Class<?> parentClazz = clazz.getSuperclass();
while (parentClazz != null) {
if (Modifier.isPublic(parentClazz.getModifiers())) {
try {
@@ -864,7 +865,7 @@ public class MethodUtils {
* @param parameterTypes The parameter type signatures
*/
private static Method getAccessibleMethodFromInterfaceNest
- (Class clazz, String methodName, Class[] parameterTypes) {
+ (Class<?> clazz, String methodName, Class<?>[] parameterTypes) {
Method method = null;
@@ -872,7 +873,7 @@ public class MethodUtils {
for (; clazz != null; clazz = clazz.getSuperclass()) {
// Check the implemented interfaces of the parent class
- Class[] interfaces = clazz.getInterfaces();
+ Class<?>[] interfaces = clazz.getInterfaces();
for (int i = 0; i < interfaces.length; i++) {
// Is this interface public?
@@ -917,7 +918,7 @@ public class MethodUtils {
* In other words, it finds a method with the given name
* that will take the parameters given.<p>
*
- * <p>This method is slightly undeterminstic since it loops
+ * <p>This method is slightly undeterministic since it loops
* through methods names and return the first matching method.</p>
*
* <p>This method is used by
@@ -934,9 +935,9 @@ public class MethodUtils {
* @return The accessible method
*/
public static Method getMatchingAccessibleMethod(
- Class clazz,
+ Class<?> clazz,
String methodName,
- Class[] parameterTypes) {
+ Class<?>[] parameterTypes) {
// trace logging
Log log = LogFactory.getLog(MethodUtils.class);
if (log.isTraceEnabled()) {
@@ -981,7 +982,7 @@ public class MethodUtils {
}
// compare parameters
- Class[] methodsParams = methods[i].getParameterTypes();
+ Class<?>[] methodsParams = methods[i].getParameterTypes();
int methodParamSize = methodsParams.length;
if (methodParamSize == paramSize) {
boolean match = true;
@@ -1094,11 +1095,11 @@ public class MethodUtils {
* @param destArgs The destination arguments
* @return The total transformation cost
*/
- private static float getTotalTransformationCost(Class[] srcArgs, Class[] destArgs) {
+ private static float getTotalTransformationCost(Class<?>[] srcArgs, Class<?>[] destArgs) {
float totalCost = 0.0f;
for (int i = 0; i < srcArgs.length; i++) {
- Class srcClass, destClass;
+ Class<?> srcClass, destClass;
srcClass = srcArgs[i];
destClass = destArgs[i];
totalCost += getObjectTransformationCost(srcClass, destClass);
@@ -1115,11 +1116,11 @@ public class MethodUtils {
* @param destClass The destination class
* @return The cost of transforming an object
*/
- private static float getObjectTransformationCost(Class srcClass, Class destClass) {
+ private static float getObjectTransformationCost(Class<?> srcClass, Class<?> destClass) {
float cost = 0.0f;
while (srcClass != null && !destClass.equals(srcClass)) {
if (destClass.isPrimitive()) {
- Class destClassWrapperClazz = getPrimitiveWrapper(destClass);
+ Class<?> destClassWrapperClazz = getPrimitiveWrapper(destClass);
if (destClassWrapperClazz != null && destClassWrapperClazz.equals(srcClass)) {
cost += 0.25f;
break;
@@ -1164,9 +1165,9 @@ public class MethodUtils {
* @param parameterType the type of parameter accepted by the method
* @param parameterization the type of parameter being tested
*
- * @return true if the assignement is compatible.
+ * @return true if the assignment is compatible.
*/
- public static final boolean isAssignmentCompatible(Class parameterType, Class parameterization) {
+ public static final boolean isAssignmentCompatible(Class<?> parameterType, Class<?> parameterization) {
// try plain assignment
if (parameterType.isAssignableFrom(parameterization)) {
return true;
@@ -1175,7 +1176,7 @@ public class MethodUtils {
if (parameterType.isPrimitive()) {
// this method does *not* do widening - you must specify exactly
// is this the right behaviour?
- Class parameterWrapperClazz = getPrimitiveWrapper(parameterType);
+ Class<?> parameterWrapperClazz = getPrimitiveWrapper(parameterType);
if (parameterWrapperClazz != null) {
return parameterWrapperClazz.equals(parameterization);
}
@@ -1191,7 +1192,7 @@ public class MethodUtils {
* @return the wrapper type associated with the given primitive
* or null if no match is found
*/
- public static Class getPrimitiveWrapper(Class primitiveType) {
+ public static Class<?> getPrimitiveWrapper(Class<?> primitiveType) {
// does anyone know a better strategy than comparing names?
if (boolean.class.equals(primitiveType)) {
return Boolean.class;
@@ -1222,7 +1223,7 @@ public class MethodUtils {
* @return the primitive type class corresponding to the given wrapper class,
* null if no match is found
*/
- public static Class getPrimitiveType(Class wrapperType) {
+ public static Class<?> getPrimitiveType(Class<?> wrapperType) {
// does anyone know a better strategy than comparing names?
if (Boolean.class.equals(wrapperType)) {
return boolean.class;
@@ -1255,9 +1256,9 @@ public class MethodUtils {
* @param clazz the class to find a representation for, not null
* @return the original class if it not a primitive. Otherwise the wrapper class. Not null
*/
- public static Class toNonPrimitiveClass(Class clazz) {
+ public static Class<?> toNonPrimitiveClass(Class<?> clazz) {
if (clazz.isPrimitive()) {
- Class primitiveClazz = MethodUtils.getPrimitiveWrapper(clazz);
+ Class<?> primitiveClazz = MethodUtils.getPrimitiveWrapper(clazz);
// the above method returns
if (primitiveClazz != null) {
return primitiveClazz;
@@ -1278,9 +1279,9 @@ public class MethodUtils {
*/
private static Method getCachedMethod(MethodDescriptor md) {
if (CACHE_METHODS) {
- Reference methodRef = (Reference)cache.get(md);
+ Reference<Method> methodRef = cache.get(md);
if (methodRef != null) {
- return (Method)methodRef.get();
+ return methodRef.get();
}
}
return null;
@@ -1295,7 +1296,7 @@ public class MethodUtils {
private static void cacheMethod(MethodDescriptor md, Method method) {
if (CACHE_METHODS) {
if (method != null) {
- cache.put(md, new WeakReference(method));
+ cache.put(md, new WeakReference<Method>(method));
}
}
}
@@ -1304,9 +1305,9 @@ public class MethodUtils {
* Represents the key to looking up a Method by reflection.
*/
private static class MethodDescriptor {
- private final Class cls;
+ private final Class<?> cls;
private final String methodName;
- private final Class[] paramTypes;
+ private final Class<?>[] paramTypes;
private final boolean exact;
private final int hashCode;
@@ -1315,10 +1316,10 @@ public class MethodUtils {
*
* @param cls the class to reflect, must not be null
* @param methodName the method name to obtain
- * @param paramTypes the array of classes representing the paramater types
+ * @param paramTypes the array of classes representing the parameter types
* @param exact whether the match has to be exact.
*/
- public MethodDescriptor(Class cls, String methodName, Class[] paramTypes, boolean exact) {
+ public MethodDescriptor(Class<?> cls, String methodName, Class<?>[] paramTypes, boolean exact) {
if (cls == null) {
throw new IllegalArgumentException("Class cannot be null");
}