Author: mbenson
Date: Tue Feb 2 20:39:36 2010
New Revision: 905786
URL: http://svn.apache.org/viewvc?rev=905786&view=rev
Log:
remove pre Java 5 workaround
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java?rev=905786&r1=905785&r2=905786&view=diff
==============================================================================
---
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java
(original)
+++
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java
Tue Feb 2 20:39:36 2010
@@ -18,16 +18,14 @@
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Member;
-import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.ClassUtils;
-import org.apache.commons.lang3.SystemUtils;
/**
* Contains common code for working with Methods/Constructors, extracted and
- * refactored from <code>MethodUtils</code> when it was imported from Commons
BeanUtils.
+ * refactored from <code>MethodUtils</code> when it was imported from Commons
+ * BeanUtils.
*
* @author Apache Software Foundation
* @author Steve Cohen
@@ -40,35 +38,20 @@
private static final int ACCESS_TEST = Modifier.PUBLIC |
Modifier.PROTECTED | Modifier.PRIVATE;
- private static final Method IS_SYNTHETIC;
- static {
- Method isSynthetic = null;
- if (SystemUtils.isJavaVersionAtLeast(1.5f)) {
- // cannot call synthetic methods:
- try {
- isSynthetic = Member.class.getMethod("isSynthetic",
- ArrayUtils.EMPTY_CLASS_ARRAY);
- } catch (Exception e) {
- }
- }
- IS_SYNTHETIC = isSynthetic;
- }
-
/** Array of primitive number types ordered by "promotability" */
- private static final Class<?>[] ORDERED_PRIMITIVE_TYPES = { Byte.TYPE,
- Short.TYPE, Character.TYPE, Integer.TYPE, Long.TYPE, Float.TYPE,
- Double.TYPE };
+ private static final Class<?>[] ORDERED_PRIMITIVE_TYPES = { Byte.TYPE,
Short.TYPE,
+ Character.TYPE, Integer.TYPE, Long.TYPE, Float.TYPE, Double.TYPE };
/**
* XXX Default access superclass workaround
*
- * When a public class has a default access superclass with public
- * members, these members are accessible. Calling them from
- * compiled code works fine. Unfortunately, on some JVMs, using reflection
to invoke these
- * members seems to (wrongly) to prevent access even when the
- * modifer is public. Calling setAccessible(true) solves the problem
- * but will only work from sufficiently privileged code. Better
- * workarounds would be gratefully accepted.
+ * When a public class has a default access superclass with public members,
+ * these members are accessible. Calling them from compiled code works
fine.
+ * Unfortunately, on some JVMs, using reflection to invoke these members
+ * seems to (wrongly) to prevent access even when the modifer is public.
+ * Calling setAccessible(true) solves the problem but will only work from
+ * sufficiently privileged code. Better workarounds would be gratefully
+ * accepted.
* @param o the AccessibleObject to set as accessible
*/
static void setAccessibleWorkaround(AccessibleObject o) {
@@ -76,7 +59,8 @@
return;
}
Member m = (Member) o;
- if (Modifier.isPublic(m.getModifiers()) &&
isPackageAccess(m.getDeclaringClass().getModifiers())) {
+ if (Modifier.isPublic(m.getModifiers())
+ && isPackageAccess(m.getDeclaringClass().getModifiers())) {
try {
o.setAccessible(true);
} catch (SecurityException e) {
@@ -100,33 +84,19 @@
* @return true if <code>m</code> is accessible
*/
static boolean isAccessible(Member m) {
- return m != null && Modifier.isPublic(m.getModifiers())
- && !isSynthetic(m);
- }
-
- /**
- * Try to learn whether a given member, on JDK >= 1.5, is synthetic.
- * @param m Member to check
- * @return true if <code>m</code> was introduced by the compiler.
- */
- static boolean isSynthetic(Member m) {
- if (IS_SYNTHETIC != null) {
- try {
- return ((Boolean) IS_SYNTHETIC.invoke(m, (Object[])
null)).booleanValue();
- } catch (Exception e) {
- }
- }
- return false;
+ return m != null && Modifier.isPublic(m.getModifiers()) &&
!m.isSynthetic();
}
/**
* Compare the relative fitness of two sets of parameter types in terms of
* matching a third set of runtime parameter types, such that a list
ordered
- * by the results of the comparison would return the best match first
(least).
+ * by the results of the comparison would return the best match first
+ * (least).
*
* @param left the "left" parameter set
* @param right the "right" parameter set
- * @param actual the runtime parameter types to match against
<code>left</code>/<code>right</code>
+ * @param actual the runtime parameter types to match against
+ * <code>left</code>/<code>right</code>
* @return int consistent with <code>compare</code> semantics
*/
static int compareParameterTypes(Class<?>[] left, Class<?>[] right,
Class<?>[] actual) {
@@ -136,14 +106,13 @@
}
/**
- * Returns the sum of the object transformation cost for each class in the
source
- * argument list.
+ * Returns the sum of the object transformation cost for each class in the
+ * source argument list.
* @param srcArgs The source arguments
* @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;
@@ -155,22 +124,20 @@
}
/**
- * Gets the number of steps required needed to turn the source class into
the
- * destination class. This represents the number of steps in the object
hierarchy
- * graph.
+ * Gets the number of steps required needed to turn the source class into
+ * the destination class. This represents the number of steps in the object
+ * hierarchy graph.
* @param srcClass The source class
* @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) {
if (destClass.isPrimitive()) {
return getPrimitivePromotionCost(srcClass, destClass);
}
float cost = 0.0f;
while (destClass != null && !destClass.equals(srcClass)) {
- if (destClass.isInterface()
- && ClassUtils.isAssignable(srcClass, destClass)) {
+ if (destClass.isInterface() && ClassUtils.isAssignable(srcClass,
destClass)) {
// slight penalty for interface match.
// we still want an exact match to override an interface match,
// but
@@ -193,13 +160,13 @@
}
/**
- * Get the number of steps required to promote a primitive number to
another type.
+ * Get the number of steps required to promote a primitive number to
another
+ * type.
* @param srcClass the (primitive) source class
* @param destClass the (primitive) destination class
* @return The cost of promoting the primitive
*/
- private static float getPrimitivePromotionCost(final Class<?> srcClass,
- final Class<?> destClass) {
+ private static float getPrimitivePromotionCost(final Class<?> srcClass,
final Class<?> destClass) {
float cost = 0.0f;
Class<?> cls = srcClass;
if (!cls.isPrimitive()) {