Search in sources :

Example 1 with CachingMetadataReaderFactoryPostProcessor

use of org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer.CachingMetadataReaderFactoryPostProcessor in project spring-boot by spring-projects.

the class SharedMetadataReaderFactoryContextInitializerTests method initializeWhenUsingSupplierDecorates.

@Test
void initializeWhenUsingSupplierDecorates() {
    GenericApplicationContext context = new GenericApplicationContext();
    BeanDefinitionRegistry registry = (BeanDefinitionRegistry) context.getBeanFactory();
    ConfigurationClassPostProcessor configurationAnnotationPostProcessor = mock(ConfigurationClassPostProcessor.class);
    BeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(ConfigurationClassPostProcessor.class).getBeanDefinition();
    ((AbstractBeanDefinition) beanDefinition).setInstanceSupplier(() -> configurationAnnotationPostProcessor);
    registry.registerBeanDefinition(AnnotationConfigUtils.CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME, beanDefinition);
    CachingMetadataReaderFactoryPostProcessor postProcessor = new CachingMetadataReaderFactoryPostProcessor(context);
    postProcessor.postProcessBeanDefinitionRegistry(registry);
    context.refresh();
    ConfigurationClassPostProcessor bean = context.getBean(ConfigurationClassPostProcessor.class);
    assertThat(bean).isSameAs(configurationAnnotationPostProcessor);
    ArgumentCaptor<MetadataReaderFactory> metadataReaderFactory = ArgumentCaptor.forClass(MetadataReaderFactory.class);
    then(configurationAnnotationPostProcessor).should().setMetadataReaderFactory(metadataReaderFactory.capture());
    assertThat(metadataReaderFactory.getValue()).isInstanceOf(ConcurrentReferenceCachingMetadataReaderFactory.class);
}
Also used : GenericApplicationContext(org.springframework.context.support.GenericApplicationContext) MetadataReaderFactory(org.springframework.core.type.classreading.MetadataReaderFactory) ConcurrentReferenceCachingMetadataReaderFactory(org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory) AbstractBeanDefinition(org.springframework.beans.factory.support.AbstractBeanDefinition) BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry) ConfigurationClassPostProcessor(org.springframework.context.annotation.ConfigurationClassPostProcessor) AbstractBeanDefinition(org.springframework.beans.factory.support.AbstractBeanDefinition) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) CachingMetadataReaderFactoryPostProcessor(org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer.CachingMetadataReaderFactoryPostProcessor) Test(org.junit.jupiter.api.Test)

Aggregations

Test (org.junit.jupiter.api.Test)1 BeanDefinition (org.springframework.beans.factory.config.BeanDefinition)1 AbstractBeanDefinition (org.springframework.beans.factory.support.AbstractBeanDefinition)1 BeanDefinitionRegistry (org.springframework.beans.factory.support.BeanDefinitionRegistry)1 CachingMetadataReaderFactoryPostProcessor (org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer.CachingMetadataReaderFactoryPostProcessor)1 ConcurrentReferenceCachingMetadataReaderFactory (org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory)1 ConfigurationClassPostProcessor (org.springframework.context.annotation.ConfigurationClassPostProcessor)1 GenericApplicationContext (org.springframework.context.support.GenericApplicationContext)1 MetadataReaderFactory (org.springframework.core.type.classreading.MetadataReaderFactory)1