From ad549f8f34d41782f15718abcf30eb38a2dfa6c8 Mon Sep 17 00:00:00 2001 From: Matthew Jason Benson Date: Thu, 24 Feb 2011 00:05:02 +0000 Subject: [PATCH] address the invalidity of null annotation members git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1073995 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/commons/lang3/AnnotationUtils.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/commons/lang3/AnnotationUtils.java b/src/main/java/org/apache/commons/lang3/AnnotationUtils.java index 80a6da896..ae9dd8f65 100644 --- a/src/main/java/org/apache/commons/lang3/AnnotationUtils.java +++ b/src/main/java/org/apache/commons/lang3/AnnotationUtils.java @@ -148,7 +148,12 @@ public static int hashCode(Annotation a) throws IllegalArgumentException, int result = 0; Class type = a.annotationType(); for (Method m : type.getDeclaredMethods()) { - result += hashMember(m.getName(), m.invoke(a)); + Object value = m.invoke(a); + if (value == null) { + throw new IllegalStateException(String.format("Annotation method %s returned null", + m)); + } + result += hashMember(m.getName(), value); } return result; } @@ -198,9 +203,6 @@ public static boolean isValidAnnotationMemberType(Class type) { private static int hashMember(String name, Object value) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { int part1 = name.hashCode() * 127; - if (value == null) { - return part1; - } if (value.getClass().isArray()) { return part1 ^ arrayMemberHash(value.getClass().getComponentType(), value); }