diff --git a/org.springframework.context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java b/org.springframework.context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java index aa95cd70896a..91e5366f5dd9 100644 --- a/org.springframework.context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java +++ b/org.springframework.context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java @@ -44,7 +44,7 @@ public BeanFactoryCacheOperationSourceAdvisor cacheAdvisor() { new BeanFactoryCacheOperationSourceAdvisor(); advisor.setCacheOperationSource(cacheOperationSource()); advisor.setAdvice(cacheInterceptor()); - advisor.setOrder(this.enableCaching.getInt("order")); + advisor.setOrder(this.enableCaching.getNumber("order")); return advisor; } diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java index f7d49a473698..8c4651bc37dd 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java @@ -73,8 +73,7 @@ public final String[] selectImports(AnnotationMetadata importingClassMetadata) { "@%s is not present on importing class '%s' as expected", annoType.getSimpleName(), importingClassMetadata.getClassName())); - AdviceMode adviceMode = - attributes.getEnum(this.getAdviceModeAttributeName(), AdviceMode.class); + AdviceMode adviceMode = attributes.getEnum(this.getAdviceModeAttributeName()); String[] imports = selectImports(adviceMode); Assert.notNull(imports, String.format("Unknown AdviceMode: '%s'", adviceMode)); diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java index 753d3994b88f..4b296177b99f 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java @@ -232,8 +232,8 @@ static void processCommonDefinitionAnnotations(AnnotatedBeanDefinition abd) { } if (abd instanceof AbstractBeanDefinition) { if (metadata.isAnnotated(Role.class.getName())) { - ((AbstractBeanDefinition)abd).setRole( - attributesFor(metadata, Role.class).getInt("value")); + int role = attributesFor(metadata, Role.class).getNumber("value"); + ((AbstractBeanDefinition)abd).setRole(role); } } } diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java index 9f1b82e196a1..0d655830b39e 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java @@ -81,7 +81,7 @@ public ScopeMetadata resolveScopeMetadata(BeanDefinition definition) { attributesFor(annDef.getMetadata(), this.scopeAnnotationType); if (attributes != null) { metadata.setScopeName(attributes.getString("value")); - ScopedProxyMode proxyMode = attributes.getEnum("proxyMode", ScopedProxyMode.class); + ScopedProxyMode proxyMode = attributes.getEnum("proxyMode"); if (proxyMode == null || proxyMode == ScopedProxyMode.DEFAULT) { proxyMode = this.defaultProxyMode; } diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java index a9d42ff15641..9fa82e40c781 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java @@ -70,15 +70,15 @@ public Set parse(AnnotationAttributes componentScan) { Assert.notNull(this.resourceLoader, "ResourceLoader must not be null"); scanner.setResourceLoader(this.resourceLoader); - scanner.setBeanNameGenerator(BeanUtils.instantiateClass( - componentScan.getClass("nameGenerator", BeanNameGenerator.class))); + Class generatorClass = componentScan.getClass("nameGenerator"); + scanner.setBeanNameGenerator(BeanUtils.instantiateClass(generatorClass)); - ScopedProxyMode scopedProxyMode = componentScan.getEnum("scopedProxy", ScopedProxyMode.class); + ScopedProxyMode scopedProxyMode = componentScan.getEnum("scopedProxy"); if (scopedProxyMode != ScopedProxyMode.DEFAULT) { scanner.setScopedProxyMode(scopedProxyMode); } else { - scanner.setScopeMetadataResolver(BeanUtils.instantiateClass( - componentScan.getClass("scopeResolver", ScopeMetadataResolver.class))); + Class resolverClass = componentScan.getClass("scopeResolver"); + scanner.setScopeMetadataResolver(BeanUtils.instantiateClass(resolverClass)); } scanner.setResourcePattern(componentScan.getString("resourcePattern")); @@ -118,7 +118,7 @@ public Set parse(AnnotationAttributes componentScan) { private List typeFiltersFor(AnnotationAttributes filterAttributes) { List typeFilters = new ArrayList(); - FilterType filterType = filterAttributes.getEnum("type", FilterType.class); + FilterType filterType = filterAttributes.getEnum("type"); for (Class filterClass : filterAttributes.getClassArray("value")) { switch (filterType) { diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java index a378e01787ba..ffa0e08d8211 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java @@ -198,7 +198,7 @@ private void loadBeanDefinitionsForBeanMethod(BeanMethod beanMethod) { // consider role AnnotationAttributes role = attributesFor(metadata, Role.class); if (role != null) { - beanDef.setRole(role.getInt("value")); + beanDef.setRole(role.getNumber("value")); } // consider name and any aliases @@ -246,7 +246,7 @@ else if (configClass.getMetadata().isAnnotated(Lazy.class.getName())){ } } - Autowire autowire = bean.getEnum("autowire", Autowire.class); + Autowire autowire = bean.getEnum("autowire"); if (autowire.isAutowire()) { beanDef.setAutowireMode(autowire.value()); } @@ -266,7 +266,7 @@ else if (configClass.getMetadata().isAnnotated(Lazy.class.getName())){ AnnotationAttributes scope = attributesFor(metadata, Scope.class); if (scope != null) { beanDef.setScope(scope.getString("value")); - proxyMode = scope.getEnum("proxyMode", ScopedProxyMode.class); + proxyMode = scope.getEnum("proxyMode"); if (proxyMode == ScopedProxyMode.DEFAULT) { proxyMode = ScopedProxyMode.NO; } diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java index 38b6679bbd63..a6533c911171 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java @@ -216,8 +216,7 @@ protected void doProcessConfigurationClass(ConfigurationClass configClass, Annot if (metadata.isAnnotated(ImportResource.class.getName())) { AnnotationAttributes importResource = attributesFor(metadata, ImportResource.class); String[] resources = importResource.getStringArray("value"); - Class readerClass = - importResource.getClass("reader", BeanDefinitionReader.class); + Class readerClass = importResource.getClass("reader"); for (String resource : resources) { configClass.addImportedResource(resource, readerClass); } diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java index 1d460fa773b0..3f74a3d77959 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java @@ -18,8 +18,6 @@ import static org.springframework.context.weaving.AspectJWeavingEnabler.ASPECTJ_AOP_XML_RESOURCE; -import java.util.Map; - import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; @@ -80,7 +78,8 @@ public LoadTimeWeaver loadTimeWeaver() { loadTimeWeaver = new DefaultContextLoadTimeWeaver(this.beanClassLoader); } - switch (this.enableLTW.getEnum("aspectjWeaving", AspectJWeaving.class)) { + AspectJWeaving aspectJWeaving = this.enableLTW.getEnum("aspectjWeaving"); + switch (aspectJWeaving) { case DISABLED: // AJ weaving is disabled -> do nothing break; diff --git a/org.springframework.context/src/main/java/org/springframework/scheduling/annotation/ProxyAsyncConfiguration.java b/org.springframework.context/src/main/java/org/springframework/scheduling/annotation/ProxyAsyncConfiguration.java index e6ab3a37c8b9..8ec439db2e54 100644 --- a/org.springframework.context/src/main/java/org/springframework/scheduling/annotation/ProxyAsyncConfiguration.java +++ b/org.springframework.context/src/main/java/org/springframework/scheduling/annotation/ProxyAsyncConfiguration.java @@ -46,7 +46,7 @@ public AsyncAnnotationBeanPostProcessor asyncAdvisor() { AsyncAnnotationBeanPostProcessor bpp = new AsyncAnnotationBeanPostProcessor(); - Class customAsyncAnnotation = enableAsync.getClass("annotation", Annotation.class); + Class customAsyncAnnotation = enableAsync.getClass("annotation"); if (customAsyncAnnotation != AnnotationUtils.getDefaultValue(EnableAsync.class, "annotation")) { bpp.setAsyncAnnotationType(customAsyncAnnotation); } @@ -56,8 +56,7 @@ public AsyncAnnotationBeanPostProcessor asyncAdvisor() { } bpp.setProxyTargetClass(this.enableAsync.getBoolean("proxyTargetClass")); - - bpp.setOrder(this.enableAsync.getInt("order")); + bpp.setOrder(this.enableAsync.getNumber("order")); return bpp; } diff --git a/org.springframework.core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java b/org.springframework.core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java index 110a35bc1568..1ea4ba3a470a 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java +++ b/org.springframework.core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java @@ -92,16 +92,18 @@ public boolean getBoolean(String attributeName) { return doGet(attributeName, Boolean.class); } - public int getInt(String attributeName) { - return doGet(attributeName, Integer.class); + @SuppressWarnings("unchecked") + public N getNumber(String attributeName) { + return (N) doGet(attributeName, Integer.class); } - public > E getEnum(String attributeName, Class enumType) { - return doGet(attributeName, enumType); + @SuppressWarnings("unchecked") + public > E getEnum(String attributeName) { + return (E) doGet(attributeName, Enum.class); } @SuppressWarnings("unchecked") - public Class getClass(String attributeName, Class expectedType) { + public Class getClass(String attributeName) { return (Class)doGet(attributeName, Class.class); } diff --git a/org.springframework.core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java b/org.springframework.core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java index 75869ae79e85..487b33992162 100644 --- a/org.springframework.core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java +++ b/org.springframework.core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java @@ -55,11 +55,11 @@ public void testTypeSafeAttributeAccess() { assertThat(a.getStringArray("names"), equalTo(new String[] { "dave", "frank", "hal" })); assertThat(a.getBoolean("bool1"), equalTo(true)); assertThat(a.getBoolean("bool2"), equalTo(false)); - assertThat(a.getEnum("color", Color.class), equalTo(Color.RED)); - assertTrue(a.getClass("clazz", Number.class).equals(Integer.class)); + assertThat(a.getEnum("color"), equalTo(Color.RED)); + assertTrue(a.getClass("clazz").equals(Integer.class)); assertThat(a.getClassArray("classes"), equalTo(new Class[] { Number.class, Short.class, Integer.class })); - assertThat(a.getInt("number"), equalTo(42)); - assertThat(a.getAnnotation("anno").getInt("value"), equalTo(10)); + assertThat(a.getNumber("number"), equalTo(42)); + assertThat(a.getAnnotation("anno").getNumber("value"), equalTo(10)); assertThat(a.getAnnotationArray("annoArray")[0].getString("name"), equalTo("algernon")); } @@ -68,13 +68,13 @@ public void getEnum_emptyAttributeName() { AnnotationAttributes a = new AnnotationAttributes(); a.put("color", "RED"); try { - a.getEnum("", Color.class); + a.getEnum(""); fail(); } catch (IllegalArgumentException ex) { assertThat(ex.getMessage(), equalTo("attributeName must not be null or empty")); } try { - a.getEnum(null, Color.class); + a.getEnum(null); fail(); } catch (IllegalArgumentException ex) { assertThat(ex.getMessage(), equalTo("attributeName must not be null or empty")); @@ -86,7 +86,7 @@ public void getEnum_notFound() { AnnotationAttributes a = new AnnotationAttributes(); a.put("color", "RED"); try { - a.getEnum("colour", Color.class); + a.getEnum("colour"); fail(); } catch (IllegalArgumentException ex) { assertThat(ex.getMessage(), equalTo("Attribute 'colour' not found")); @@ -98,11 +98,11 @@ public void getEnum_typeMismatch() { AnnotationAttributes a = new AnnotationAttributes(); a.put("color", "RED"); try { - a.getEnum("color", Color.class); + a.getEnum("color"); fail(); } catch (IllegalArgumentException ex) { String expected = - "Attribute 'color' is of type [String], but [Color] was expected"; + "Attribute 'color' is of type [String], but [Enum] was expected"; assertThat(ex.getMessage().substring(0, expected.length()), equalTo(expected)); } } diff --git a/org.springframework.core/src/test/java/org/springframework/core/type/AnnotationMetadataTests.java b/org.springframework.core/src/test/java/org/springframework/core/type/AnnotationMetadataTests.java index 8dcc5f746692..854962422b2f 100644 --- a/org.springframework.core/src/test/java/org/springframework/core/type/AnnotationMetadataTests.java +++ b/org.springframework.core/src/test/java/org/springframework/core/type/AnnotationMetadataTests.java @@ -109,34 +109,34 @@ private void doTestAnnotationInfo(AnnotationMetadata metadata) { { // perform tests with classValuesAsString = false (the default) AnnotationAttributes specialAttrs = (AnnotationAttributes) metadata.getAnnotationAttributes(SpecialAttr.class.getName()); assertThat(specialAttrs.size(), is(6)); - assertTrue(String.class.isAssignableFrom(specialAttrs.getClass("clazz", Object.class))); - assertThat(specialAttrs.getEnum("state", Thread.State.class), is(Thread.State.NEW)); + assertTrue(String.class.isAssignableFrom(specialAttrs.getClass("clazz"))); + assertTrue(specialAttrs.getEnum("state").equals(Thread.State.NEW)); AnnotationAttributes nestedAnno = specialAttrs.getAnnotation("nestedAnno"); assertThat("na", is(nestedAnno.getString("value"))); - assertThat(nestedAnno.getEnum("anEnum", SomeEnum.class), is(SomeEnum.LABEL1)); + assertTrue(nestedAnno.getEnum("anEnum").equals(SomeEnum.LABEL1)); assertArrayEquals(new Class[]{String.class}, (Class[])nestedAnno.get("classArray")); AnnotationAttributes[] nestedAnnoArray = specialAttrs.getAnnotationArray("nestedAnnoArray"); assertThat(nestedAnnoArray.length, is(2)); assertThat(nestedAnnoArray[0].getString("value"), is("default")); - assertThat(nestedAnnoArray[0].getEnum("anEnum", SomeEnum.class), is(SomeEnum.DEFAULT)); + assertTrue(nestedAnnoArray[0].getEnum("anEnum").equals(SomeEnum.DEFAULT)); assertArrayEquals(new Class[]{Void.class}, (Class[])nestedAnnoArray[0].get("classArray")); assertThat(nestedAnnoArray[1].getString("value"), is("na1")); - assertThat(nestedAnnoArray[1].getEnum("anEnum", SomeEnum.class), is(SomeEnum.LABEL2)); + assertTrue(nestedAnnoArray[1].getEnum("anEnum").equals(SomeEnum.LABEL2)); assertArrayEquals(new Class[]{Number.class}, (Class[])nestedAnnoArray[1].get("classArray")); assertArrayEquals(new Class[]{Number.class}, nestedAnnoArray[1].getClassArray("classArray")); AnnotationAttributes optional = specialAttrs.getAnnotation("optional"); assertThat(optional.getString("value"), is("optional")); - assertThat(optional.getEnum("anEnum", SomeEnum.class), is(SomeEnum.DEFAULT)); + assertTrue(optional.getEnum("anEnum").equals(SomeEnum.DEFAULT)); assertArrayEquals(new Class[]{Void.class}, (Class[])optional.get("classArray")); assertArrayEquals(new Class[]{Void.class}, optional.getClassArray("classArray")); AnnotationAttributes[] optionalArray = specialAttrs.getAnnotationArray("optionalArray"); assertThat(optionalArray.length, is(1)); assertThat(optionalArray[0].getString("value"), is("optional")); - assertThat(optionalArray[0].getEnum("anEnum", SomeEnum.class), is(SomeEnum.DEFAULT)); + assertTrue(optionalArray[0].getEnum("anEnum").equals(SomeEnum.DEFAULT)); assertArrayEquals(new Class[]{Void.class}, (Class[])optionalArray[0].get("classArray")); assertArrayEquals(new Class[]{Void.class}, optionalArray[0].getClassArray("classArray")); } diff --git a/org.springframework.transaction/src/main/java/org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.java b/org.springframework.transaction/src/main/java/org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.java index c24d9e16f00b..c1602479b4e5 100644 --- a/org.springframework.transaction/src/main/java/org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.java +++ b/org.springframework.transaction/src/main/java/org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.java @@ -44,7 +44,7 @@ public BeanFactoryTransactionAttributeSourceAdvisor transactionAdvisor() { new BeanFactoryTransactionAttributeSourceAdvisor(); advisor.setTransactionAttributeSource(transactionAttributeSource()); advisor.setAdvice(transactionInterceptor()); - advisor.setOrder(this.enableTx.getInt("order")); + advisor.setOrder(this.enableTx.getNumber("order")); return advisor; }