Skip to content

Commit da856de

Browse files
committed
Revise BeanOverrideRegistrar and rename it to BeanOverrideRegistry
1 parent fa95593 commit da856de

File tree

6 files changed

+50
-50
lines changed

6 files changed

+50
-50
lines changed

spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessor.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,21 +68,21 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
6868

6969
private final Set<BeanOverrideHandler> beanOverrideHandlers;
7070

71-
private final BeanOverrideRegistrar beanOverrideRegistrar;
71+
private final BeanOverrideRegistry beanOverrideRegistry;
7272

7373

7474
/**
7575
* Create a new {@code BeanOverrideBeanFactoryPostProcessor} with the supplied
7676
* set of {@link BeanOverrideHandler BeanOverrideHandlers} to process, using
77-
* the given {@link BeanOverrideRegistrar}.
77+
* the given {@link BeanOverrideRegistry}.
7878
* @param beanOverrideHandlers the bean override handlers to process
79-
* @param beanOverrideRegistrar the registrar used to track bean override handlers
79+
* @param beanOverrideRegistry the registry used to track bean override handlers
8080
*/
8181
BeanOverrideBeanFactoryPostProcessor(Set<BeanOverrideHandler> beanOverrideHandlers,
82-
BeanOverrideRegistrar beanOverrideRegistrar) {
82+
BeanOverrideRegistry beanOverrideRegistry) {
8383

8484
this.beanOverrideHandlers = beanOverrideHandlers;
85-
this.beanOverrideRegistrar = beanOverrideRegistrar;
85+
this.beanOverrideRegistry = beanOverrideRegistry;
8686
}
8787

8888

@@ -193,7 +193,7 @@ else if (Boolean.getBoolean(AbstractAotProcessor.AOT_PROCESSING)) {
193193

194194
Object override = handler.createOverrideInstance(beanName, existingBeanDefinition, null);
195195
handler.trackOverrideInstance(override, beanFactory);
196-
this.beanOverrideRegistrar.registerBeanOverrideHandler(handler, beanName);
196+
this.beanOverrideRegistry.registerBeanOverrideHandler(handler, beanName);
197197

198198
// Now we have an instance (the override) that we can manually register as a singleton.
199199
//
@@ -245,8 +245,7 @@ private void wrapBean(ConfigurableListableBeanFactory beanFactory, BeanOverrideH
245245
}
246246
}
247247
validateBeanDefinition(beanFactory, beanName);
248-
this.beanOverrideRegistrar.registerWrappingBeanOverrideHandler(handler, beanName);
249-
this.beanOverrideRegistrar.registerBeanOverrideHandler(handler, beanName);
248+
this.beanOverrideRegistry.registerBeanOverrideHandler(handler, beanName);
250249
}
251250

252251
@Nullable

spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideContextCustomizer.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
*/
3535
class BeanOverrideContextCustomizer implements ContextCustomizer {
3636

37-
static final String REGISTRAR_BEAN_NAME =
38-
"org.springframework.test.context.bean.override.internalBeanOverrideRegistrar";
37+
static final String REGISTRY_BEAN_NAME =
38+
"org.springframework.test.context.bean.override.internalBeanOverrideRegistry";
3939

4040
private static final String INFRASTRUCTURE_BEAN_NAME =
4141
"org.springframework.test.context.bean.override.internalBeanOverridePostProcessor";
@@ -59,12 +59,12 @@ public void customizeContext(ConfigurableApplicationContext context, MergedConte
5959
// the BeanOverrideBeanFactoryPostProcessor as a singleton is a requirement for
6060
// AOT processing, since a bean definition cannot be generated for the
6161
// Set<BeanOverrideHandler> argument that it accepts in its constructor.
62-
BeanOverrideRegistrar beanOverrideRegistrar = new BeanOverrideRegistrar(beanFactory);
63-
beanFactory.registerSingleton(REGISTRAR_BEAN_NAME, beanOverrideRegistrar);
62+
BeanOverrideRegistry beanOverrideRegistry = new BeanOverrideRegistry(beanFactory);
63+
beanFactory.registerSingleton(REGISTRY_BEAN_NAME, beanOverrideRegistry);
6464
beanFactory.registerSingleton(INFRASTRUCTURE_BEAN_NAME,
65-
new BeanOverrideBeanFactoryPostProcessor(this.handlers, beanOverrideRegistrar));
65+
new BeanOverrideBeanFactoryPostProcessor(this.handlers, beanOverrideRegistry));
6666
beanFactory.registerSingleton(EARLY_INFRASTRUCTURE_BEAN_NAME,
67-
new WrapEarlyBeanPostProcessor(beanOverrideRegistrar));
67+
new WrapEarlyBeanPostProcessor(beanOverrideRegistry));
6868
}
6969

7070
Set<BeanOverrideHandler> getBeanOverrideHandlers() {
Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.HashMap;
2121
import java.util.Map;
2222

23-
import org.springframework.beans.BeansException;
2423
import org.springframework.beans.factory.BeanCreationException;
2524
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
2625
import org.springframework.util.Assert;
@@ -36,54 +35,56 @@
3635
* @author Sam Brannen
3736
* @since 6.2
3837
*/
39-
class BeanOverrideRegistrar {
38+
class BeanOverrideRegistry {
4039

41-
private final Map<BeanOverrideHandler, String> beanNameRegistry = new HashMap<>();
40+
private final Map<BeanOverrideHandler, String> handlerToBeanNameMap = new HashMap<>();
4241

4342
private final Map<String, BeanOverrideHandler> wrappingBeanOverrideHandlers = new HashMap<>();
4443

4544
private final ConfigurableBeanFactory beanFactory;
4645

4746

48-
BeanOverrideRegistrar(ConfigurableBeanFactory beanFactory) {
47+
BeanOverrideRegistry(ConfigurableBeanFactory beanFactory) {
4948
Assert.notNull(beanFactory, "ConfigurableBeanFactory must not be null");
5049
this.beanFactory = beanFactory;
5150
}
5251

5352
/**
5453
* Register the provided {@link BeanOverrideHandler} and associate it with the
5554
* given {@code beanName}.
56-
*/
57-
void registerBeanOverrideHandler(BeanOverrideHandler handler, String beanName) {
58-
this.beanNameRegistry.put(handler, beanName);
59-
}
60-
61-
/**
62-
* Register the provided {@link BeanOverrideHandler} as a
63-
* {@linkplain BeanOverrideStrategy#WRAP "wrapping"} handler and associate it
55+
* <p>Also associates a {@linkplain BeanOverrideStrategy#WRAP "wrapping"} handler
6456
* with the given {@code beanName}, allowing for subsequent wrapping of the
65-
* bean via {@link #wrapIfNecessary(Object, String)}.
57+
* bean via {@link #wrapBeanIfNecessary(Object, String)}.
6658
*/
67-
void registerWrappingBeanOverrideHandler(BeanOverrideHandler handler, String beanName) {
68-
this.wrappingBeanOverrideHandlers.put(beanName, handler);
59+
void registerBeanOverrideHandler(BeanOverrideHandler handler, String beanName) {
60+
this.handlerToBeanNameMap.put(handler, beanName);
61+
if (handler.getStrategy() == BeanOverrideStrategy.WRAP) {
62+
this.wrappingBeanOverrideHandlers.put(beanName, handler);
63+
}
6964
}
7065

7166
/**
72-
* Check {@linkplain #registerWrappingBeanOverrideHandler(BeanOverrideHandler, String)
73-
* wrapping handler} records and use the corresponding {@link BeanOverrideHandler}
74-
* to create an override instance by wrapping the provided bean, if relevant.
67+
* Use the registered {@linkplain BeanOverrideStrategy#WRAP "wrapping"}
68+
* {@link BeanOverrideHandler} to create an override instance by wrapping the
69+
* supplied bean.
70+
* <p>If no suitable {@code BeanOverrideHandler} has been registered, this
71+
* method returns the supplied bean unmodified.
72+
* @see #registerBeanOverrideHandler(BeanOverrideHandler, String)
7573
*/
76-
Object wrapIfNecessary(Object bean, String beanName) throws BeansException {
77-
BeanOverrideHandler handler = this.wrappingBeanOverrideHandlers.get(beanName);
78-
if (handler != null && handler.getStrategy() == BeanOverrideStrategy.WRAP) {
79-
bean = handler.createOverrideInstance(beanName, null, bean);
80-
handler.trackOverrideInstance(bean, this.beanFactory);
74+
Object wrapBeanIfNecessary(Object bean, String beanName) {
75+
if (!this.wrappingBeanOverrideHandlers.containsKey(beanName)) {
76+
return bean;
8177
}
78+
BeanOverrideHandler handler = this.wrappingBeanOverrideHandlers.get(beanName);
79+
Assert.state(handler != null,
80+
() -> "Failed to find wrapping BeanOverrideHandler for bean '" + beanName + "'");
81+
bean = handler.createOverrideInstance(beanName, null, bean);
82+
handler.trackOverrideInstance(bean, this.beanFactory);
8283
return bean;
8384
}
8485

8586
void inject(Object target, BeanOverrideHandler handler) {
86-
String beanName = this.beanNameRegistry.get(handler);
87+
String beanName = this.handlerToBeanNameMap.get(handler);
8788
Assert.state(StringUtils.hasLength(beanName),
8889
() -> "No bean found for BeanOverrideHandler: " + handler);
8990
inject(handler.getField(), target, beanName);

spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,14 @@ public void beforeTestMethod(TestContext testContext) throws Exception {
7777
* a corresponding bean override instance.
7878
*/
7979
private static void injectFields(TestContext testContext) {
80-
List<BeanOverrideHandler> handlerList = BeanOverrideHandler.forTestClass(testContext.getTestClass());
81-
if (!handlerList.isEmpty()) {
80+
List<BeanOverrideHandler> handlers = BeanOverrideHandler.forTestClass(testContext.getTestClass());
81+
if (!handlers.isEmpty()) {
8282
Object testInstance = testContext.getTestInstance();
83-
BeanOverrideRegistrar registrar = testContext.getApplicationContext()
84-
.getBean(BeanOverrideContextCustomizer.REGISTRAR_BEAN_NAME, BeanOverrideRegistrar.class);
83+
BeanOverrideRegistry beanOverrideRegistry = testContext.getApplicationContext()
84+
.getBean(BeanOverrideContextCustomizer.REGISTRY_BEAN_NAME, BeanOverrideRegistry.class);
8585

86-
for (BeanOverrideHandler handler : handlerList) {
87-
registrar.inject(testInstance, handler);
86+
for (BeanOverrideHandler handler : handlers) {
87+
beanOverrideRegistry.inject(testInstance, handler);
8888
}
8989
}
9090
}

spring-test/src/main/java/org/springframework/test/context/bean/override/WrapEarlyBeanPostProcessor.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ class WrapEarlyBeanPostProcessor implements SmartInstantiationAwareBeanPostProce
3939

4040
private final Map<String, Object> earlyReferences = new ConcurrentHashMap<>(16);
4141

42-
private final BeanOverrideRegistrar overrideRegistrar;
42+
private final BeanOverrideRegistry beanOverrideRegistry;
4343

44-
WrapEarlyBeanPostProcessor(BeanOverrideRegistrar registrar) {
45-
this.overrideRegistrar = registrar;
44+
WrapEarlyBeanPostProcessor(BeanOverrideRegistry beanOverrideRegistry) {
45+
this.beanOverrideRegistry = beanOverrideRegistry;
4646
}
4747

4848
@Override
@@ -56,7 +56,7 @@ public Object getEarlyBeanReference(Object bean, String beanName) throws BeansEx
5656
return bean;
5757
}
5858
this.earlyReferences.put(getCacheKey(bean, beanName), bean);
59-
return this.overrideRegistrar.wrapIfNecessary(bean, beanName);
59+
return this.beanOverrideRegistry.wrapBeanIfNecessary(bean, beanName);
6060
}
6161

6262
@Override
@@ -65,7 +65,7 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
6565
return bean;
6666
}
6767
if (this.earlyReferences.remove(getCacheKey(bean, beanName)) != bean) {
68-
return this.overrideRegistrar.wrapIfNecessary(bean, beanName);
68+
return this.beanOverrideRegistry.wrapBeanIfNecessary(bean, beanName);
6969
}
7070
return bean;
7171
}

spring-test/src/test/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessorTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848

4949
/**
5050
* Tests for {@link BeanOverrideBeanFactoryPostProcessor} combined with a
51-
* {@link BeanOverrideRegistrar}.
51+
* {@link BeanOverrideRegistry}.
5252
*
5353
* @author Simon Baslé
5454
* @author Stephane Nicoll

0 commit comments

Comments
 (0)