Skip to content

Commit

Permalink
Add overloaded shortcut method to register BeanDefinition (#4574)
Browse files Browse the repository at this point in the history
* Add overloaded shortcut method to register BeanDefinition

* Add unit test in BeanRegistrationUtilTest

* Add more unit test for BeanRegistrationUtil

* Add change log item
refeccd authored Sep 22, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 78aaca1 commit ba82fec
Showing 5 changed files with 42 additions and 29 deletions.
3 changes: 2 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -33,6 +33,7 @@ Apollo 2.1.0
* [fix openapi item with url illegalKey 400 error](https://github.com/apolloconfig/apollo/pull/4549)
* [fix the exception occurred when publish/rollback namespaces with grayrelease](https://github.com/apolloconfig/apollo/pull/4564)
* [fix create namespace with single dot 500 error](https://github.com/apolloconfig/apollo/pull/4568)
* [Add overloaded shortcut method to register BeanDefinition](https://github.com/apolloconfig/apollo/pull/4574)

------------------
All issues and pull requests are [here](https://github.com/apolloconfig/apollo/milestone/11?closed=1)
All issues and pull requests are [here](https://github.com/apolloconfig/apollo/milestone/11?closed=1)
Original file line number Diff line number Diff line change
@@ -54,18 +54,13 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B
// to make sure the default PropertySourcesPlaceholderConfigurer's priority is higher than PropertyPlaceholderConfigurer
propertySourcesPlaceholderPropertyValues.put("order", 0);

BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class.getName(),
PropertySourcesPlaceholderConfigurer.class, propertySourcesPlaceholderPropertyValues);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry,
AutoUpdateConfigChangeListener.class.getName(), AutoUpdateConfigChangeListener.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesProcessor.class.getName(),
PropertySourcesProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class.getName(),
ApolloAnnotationProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class.getName(),
SpringValueProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueDefinitionProcessor.class.getName(),
SpringValueDefinitionProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class,
propertySourcesPlaceholderPropertyValues);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, AutoUpdateConfigChangeListener.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueDefinitionProcessor.class);
}

private String[] resolveNamespaces(String[] namespaces) {
@@ -102,4 +97,4 @@ public int getOrder() {
public void setEnvironment(Environment environment) {
this.environment = environment;
}
}
}
Original file line number Diff line number Diff line change
@@ -36,14 +36,11 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) t
// to make sure the default PropertySourcesPlaceholderConfigurer's priority is higher than PropertyPlaceholderConfigurer
propertySourcesPlaceholderPropertyValues.put("order", 0);

BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class.getName(),
PropertySourcesPlaceholderConfigurer.class, propertySourcesPlaceholderPropertyValues);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry,
AutoUpdateConfigChangeListener.class.getName(), AutoUpdateConfigChangeListener.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class.getName(),
ApolloAnnotationProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class.getName(),
SpringValueProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, PropertySourcesPlaceholderConfigurer.class,
propertySourcesPlaceholderPropertyValues);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, AutoUpdateConfigChangeListener.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, ApolloAnnotationProcessor.class);
BeanRegistrationUtil.registerBeanDefinitionIfNotExists(registry, SpringValueProcessor.class);

processSpringValueDefinition(registry);
}
@@ -63,4 +60,4 @@ private void processSpringValueDefinition(BeanDefinitionRegistry registry) {
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
}
}
Original file line number Diff line number Diff line change
@@ -39,8 +39,17 @@ public class BeanRegistrationUtil {
);
}

public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry registry, Class<?> beanClass) {
return registerBeanDefinitionIfNotExists(registry, beanClass, null);
}

public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry registry, Class<?> beanClass,
Map<String, Object> extraPropertyValues) {
return registerBeanDefinitionIfNotExists(registry, beanClass.getName(), beanClass, extraPropertyValues);
}

public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry registry, String beanName,
Class<?> beanClass) {
Class<?> beanClass) {
return registerBeanDefinitionIfNotExists(registry, beanName, beanClass, null);
}

@@ -80,5 +89,4 @@ public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry r
return true;
}


}
}
Original file line number Diff line number Diff line change
@@ -50,15 +50,13 @@ public void registerBeanDefinitionIfNotExistsTest() {
getClass(), null));
assertFalse(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, someBeanName,
getClass()));

}

@Test
public void registerBeanDefinitionIfNotExistsBeanNotPresentTest() {
someRegistry.registerBeanDefinition("someAnotherBean", Mockito.mock(BeanDefinition.class));
assertTrue(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, someBeanName,
getClass(), null));

}

@Test
@@ -68,7 +66,21 @@ public void registerBeanDefinitionIfNotExistsWithExtPropTest() {
extraPropertyValues.put(someBeanName, "someProperty");
assertTrue(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, someBeanName,
getClass(), extraPropertyValues));
}

@Test
public void registerBeanDefinitionIfNotExistsWithoutBeanNameTest() {
someRegistry.registerBeanDefinition(BeanDefinition.class.getName(), Mockito.mock(BeanDefinition.class));
assertFalse(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, BeanDefinition.class));
}

@Test
public void registerBeanDefinitionIfNotExistsWithoutBeanNameWithExtPropTest() {
Map<String, Object> extraPropertyValues = new ConcurrentHashMap<>();
extraPropertyValues.put(someBeanName, "someProperty");
someRegistry.registerBeanDefinition(BeanDefinition.class.getName(), Mockito.mock(BeanDefinition.class));
assertFalse(BeanRegistrationUtil.registerBeanDefinitionIfNotExists(someRegistry, BeanDefinition.class,
extraPropertyValues));
}

}
}

0 comments on commit ba82fec

Please sign in to comment.