From 177f4ec3a75aa769b6ab8aa60dc67ec3fac73e3b Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Fri, 15 Jul 2016 19:54:53 +0200 Subject: [PATCH] Polish annotation utils --- ...tractAliasAwareAnnotationAttributeExtractor.java | 1 - .../core/annotation/AnnotationAttributes.java | 13 +++++++++---- .../core/annotation/AnnotationUtils.java | 5 ++--- .../DefaultAnnotationAttributeExtractor.java | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java b/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java index bc44e15ff5e..32b8725c2d6 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java @@ -17,7 +17,6 @@ package org.springframework.core.annotation; import java.lang.annotation.Annotation; -import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; import java.util.List; import java.util.Map; diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java index d5a6056fce1..daccfd38d2f 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java @@ -47,7 +47,7 @@ public class AnnotationAttributes extends LinkedHashMap { private static final String UNKNOWN = "unknown"; - private Class annotationType; + private final Class annotationType; private final String displayName; @@ -95,18 +95,23 @@ public class AnnotationAttributes extends LinkedHashMap { * or {@code null} to just store the annotation type name * @since 4.3.2 */ - @SuppressWarnings("unchecked") public AnnotationAttributes(String annotationType, ClassLoader classLoader) { Assert.notNull(annotationType, "'annotationType' must not be null"); + this.annotationType = getAnnotationType(annotationType, classLoader); + this.displayName = annotationType; + } + + @SuppressWarnings("unchecked") + private static Class getAnnotationType(String annotationType, ClassLoader classLoader) { if (classLoader != null) { try { - this.annotationType = (Class) classLoader.loadClass(annotationType); + return (Class) classLoader.loadClass(annotationType); } catch (ClassNotFoundException ex) { // Annotation Class not resolvable } } - this.displayName = annotationType; + return null; } /** diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java index 53f31bdc32d..f1ebd1d7819 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java @@ -1129,11 +1129,10 @@ public abstract class AnnotationUtils { // Only do defaults scanning for public annotations; we'd run into // IllegalAccessExceptions otherwise, and we don't want to mess with // accessibility in a SecurityManager environment. - Class annotationType = attributes.annotationType(); + Class annotationType = attributes.annotationType(); if (annotationType != null && Modifier.isPublic(annotationType.getModifiers())) { // Check declared default values of attributes in the annotation type. - Method[] annotationAttributes = annotationType.getMethods(); - for (Method annotationAttribute : annotationAttributes) { + for (Method annotationAttribute : getAttributeMethods(annotationType)) { String attributeName = annotationAttribute.getName(); Object defaultValue = annotationAttribute.getDefaultValue(); if (defaultValue != null && !attributes.containsKey(attributeName)) { diff --git a/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java b/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java index dfcf28ad172..0ea2cf0013b 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.