@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2022 the original author or authors .
* Copyright 2002 - 2023 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 .
@ -26,12 +26,12 @@ import org.junit.jupiter.api.Test;
@@ -26,12 +26,12 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition ;
import org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition ;
import org.springframework.beans.factory.config.BeanDefinition ;
import org.springframework.beans.factory.support.BeanDefinitionRegistry ;
import org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry ;
import org.springframework.stereotype.Component ;
import org.springframework.stereotype.Controller ;
import org.springframework.stereotype.Service ;
import org.springframework.util.StringUtils ;
import static org.assertj.core.api.Assertions.assertThat ;
@ -46,95 +46,81 @@ import static org.assertj.core.api.Assertions.assertThat;
@@ -46,95 +46,81 @@ import static org.assertj.core.api.Assertions.assertThat;
* /
class AnnotationBeanNameGeneratorTests {
private AnnotationBeanNameGenerator beanNameGenerator = new AnnotationBeanNameGenerator ( ) ;
private final BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
private final AnnotationBeanNameGenerator beanNameGenerator = new AnnotationBeanNameGenerator ( ) ;
@Test
void buildDefaultBeanName ( ) {
BeanDefinition bd = annotatedBeanDef ( ComponentFromNonStringMeta . class ) ;
assertThat ( this . beanNameGenerator . buildDefaultBeanName ( bd , this . registry ) )
. isEqualTo ( "annotationBeanNameGeneratorTests.ComponentFromNonStringMeta" ) ;
}
@Test
void generateBeanNameWithNamedComponent ( ) {
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( ComponentWithName . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
assertThat ( beanName ) . as ( "The generated beanName must *never* be null." ) . isNotNull ( ) ;
assertThat ( StringUtils . hasText ( beanName ) ) . as ( "The generated beanName must *never* be blank." ) . isTrue ( ) ;
assertThat ( beanName ) . isEqualTo ( "walden" ) ;
assertGeneratedName ( ComponentWithName . class , "walden" ) ;
}
@Test
void generateBeanNameWithDefaultNamedComponent ( ) {
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( DefaultNamedComponent . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
assertThat ( beanName ) . as ( "The generated beanName must *never* be null." ) . isNotNull ( ) ;
assertThat ( StringUtils . hasText ( beanName ) ) . as ( "The generated beanName must *never* be blank." ) . isTrue ( ) ;
assertThat ( beanName ) . isEqualTo ( "thoreau" ) ;
void generateBeanNameWithCustomStereotypeComponent ( ) {
assertGeneratedName ( DefaultNamedComponent . class , "thoreau" ) ;
}
@Test
void generateBeanNameWithNamedComponentWhereTheNameIsBlank ( ) {
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( ComponentWithBlankName . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
assertThat ( beanName ) . as ( "The generated beanName must *never* be null." ) . isNotNull ( ) ;
assertThat ( StringUtils . hasText ( beanName ) ) . as ( "The generated beanName must *never* be blank." ) . isTrue ( ) ;
String expectedGeneratedBeanName = this . beanNameGenerator . buildDefaultBeanName ( bd ) ;
assertThat ( beanName ) . isEqualTo ( expectedGeneratedBeanName ) ;
assertGeneratedNameIsDefault ( ComponentWithBlankName . class ) ;
}
@Test
void generateBeanNameWithAnonymousComponentYieldsGeneratedBeanName ( ) {
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( AnonymousComponent . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
assertThat ( beanName ) . as ( "The generated beanName must *never* be null." ) . isNotNull ( ) ;
assertThat ( StringUtils . hasText ( beanName ) ) . as ( "The generated beanName must *never* be blank." ) . isTrue ( ) ;
String expectedGeneratedBeanName = this . beanNameGenerator . buildDefaultBeanName ( bd ) ;
assertThat ( beanName ) . isEqualTo ( expectedGeneratedBeanName ) ;
assertGeneratedNameIsDefault ( AnonymousComponent . class ) ;
}
@Test
void generateBeanNameFromMetaComponentWithStringValue ( ) {
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( ComponentFromStringMeta . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
assertThat ( beanName ) . isEqualTo ( "henry" ) ;
assertGeneratedName ( ComponentFromStringMeta . class , "henry" ) ;
}
@Test
void generateBeanNameFromMetaComponentWithNonStringValue ( ) {
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( ComponentFromNonStringMeta . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
assertThat ( beanName ) . isEqualTo ( "annotationBeanNameGeneratorTests.ComponentFromNonStringMeta" ) ;
assertGeneratedNameIsDefault ( ComponentFromNonStringMeta . class ) ;
}
@Test
@Test // SPR-11360
void generateBeanNameFromComposedControllerAnnotationWithoutName ( ) {
// SPR-11360
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( ComposedControllerAnnotationWithoutName . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
String expectedGeneratedBeanName = this . beanNameGenerator . buildDefaultBeanName ( bd ) ;
assertThat ( beanName ) . isEqualTo ( expectedGeneratedBeanName ) ;
assertGeneratedNameIsDefault ( ComposedControllerAnnotationWithoutName . class ) ;
}
@Test
@Test // SPR-11360
void generateBeanNameFromComposedControllerAnnotationWithBlankName ( ) {
// SPR-11360
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition ( ComposedControllerAnnotationWithBlankName . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
String expectedGeneratedBeanName = this . beanNameGenerator . buildDefaultBeanName ( bd ) ;
assertThat ( beanName ) . isEqualTo ( expectedGeneratedBeanName ) ;
assertGeneratedNameIsDefault ( ComposedControllerAnnotationWithBlankName . class ) ;
}
@Test
@Test // SPR-11360
void generateBeanNameFromComposedControllerAnnotationWithStringValue ( ) {
// SPR-11360
BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry ( ) ;
AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition (
ComposedControllerAnnotationWithStringValue . class ) ;
String beanName = this . beanNameGenerator . generateBeanName ( bd , registry ) ;
assertThat ( beanName ) . isEqualTo ( "restController" ) ;
assertGeneratedName ( ComposedControllerAnnotationWithStringValue . class , "restController" ) ;
}
private void assertGeneratedName ( Class < ? > clazz , String expectedName ) {
BeanDefinition bd = annotatedBeanDef ( clazz ) ;
assertThat ( generateBeanName ( bd ) ) . isNotBlank ( ) . isEqualTo ( expectedName ) ;
}
private void assertGeneratedNameIsDefault ( Class < ? > clazz ) {
BeanDefinition bd = annotatedBeanDef ( clazz ) ;
String expectedName = this . beanNameGenerator . buildDefaultBeanName ( bd ) ;
assertThat ( generateBeanName ( bd ) ) . isNotBlank ( ) . isEqualTo ( expectedName ) ;
}
private AnnotatedBeanDefinition annotatedBeanDef ( Class < ? > clazz ) {
return new AnnotatedGenericBeanDefinition ( clazz ) ;
}
private String generateBeanName ( BeanDefinition bd ) {
return this . beanNameGenerator . generateBeanName ( bd , registry ) ;
}