Browse Source

Polishing

pull/33655/head
Sam Brannen 1 year ago
parent
commit
b0c7d15d9f
  1. 10
      spring-core/src/main/java/org/springframework/util/StringUtils.java
  2. 12
      spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessor.java
  3. 2
      spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideContextCustomizer.java
  4. 2
      spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideRegistrar.java
  5. 15
      spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.java

10
spring-core/src/main/java/org/springframework/util/StringUtils.java

@ -80,7 +80,7 @@ public abstract class StringUtils { @@ -80,7 +80,7 @@ public abstract class StringUtils {
private static final String CURRENT_PATH = ".";
private static final char EXTENSION_SEPARATOR = '.';
private static final char DOT_CHAR = '.';
private static final int DEFAULT_TRUNCATION_THRESHOLD = 100;
@ -538,7 +538,7 @@ public abstract class StringUtils { @@ -538,7 +538,7 @@ public abstract class StringUtils {
* @param qualifiedName the qualified name
*/
public static String unqualify(String qualifiedName) {
return unqualify(qualifiedName, '.');
return unqualify(qualifiedName, DOT_CHAR);
}
/**
@ -641,7 +641,7 @@ public abstract class StringUtils { @@ -641,7 +641,7 @@ public abstract class StringUtils {
return null;
}
int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR);
int extIndex = path.lastIndexOf(DOT_CHAR);
if (extIndex == -1) {
return null;
}
@ -661,7 +661,7 @@ public abstract class StringUtils { @@ -661,7 +661,7 @@ public abstract class StringUtils {
* @return the path with stripped filename extension
*/
public static String stripFilenameExtension(String path) {
int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR);
int extIndex = path.lastIndexOf(DOT_CHAR);
if (extIndex == -1) {
return path;
}
@ -724,7 +724,7 @@ public abstract class StringUtils { @@ -724,7 +724,7 @@ public abstract class StringUtils {
String pathToUse = normalizedPath;
// Shortcut if there is no work to do
if (pathToUse.indexOf(EXTENSION_SEPARATOR) == -1) {
if (pathToUse.indexOf(DOT_CHAR) == -1) {
return pathToUse;
}

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

@ -109,7 +109,7 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor, @@ -109,7 +109,7 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
if (!(beanFactory instanceof BeanDefinitionRegistry registry)) {
throw new IllegalStateException("Cannot process bean override with a BeanFactory " +
"that doesn't implement BeanDefinitionRegistry: " + beanFactory.getClass());
"that doesn't implement BeanDefinitionRegistry: " + beanFactory.getClass().getName());
}
// The following is a "pseudo" bean definition which MUST NOT be used to
@ -176,10 +176,12 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor, @@ -176,10 +176,12 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
int candidateCount = candidateNames.size();
if (candidateCount != 1) {
Field field = overrideMetadata.getField();
throw new IllegalStateException("Unable to select a bean to override by wrapping: found " +
candidateCount + " bean instances of type " + overrideMetadata.getBeanType() +
" (as required by annotated field '" + field.getDeclaringClass().getSimpleName() +
"." + field.getName() + "')" + (candidateCount > 0 ? ": " + candidateNames : ""));
throw new IllegalStateException("""
Unable to select a bean to override by wrapping: found %d bean instances of type %s \
(as required by annotated field '%s.%s')%s"""
.formatted(candidateCount, overrideMetadata.getBeanType(),
field.getDeclaringClass().getSimpleName(), field.getName(),
(candidateCount > 0 ? ": " + candidateNames : "")));
}
beanName = BeanFactoryUtils.transformedBeanName(candidateNames.iterator().next());
}

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

@ -58,7 +58,7 @@ class BeanOverrideContextCustomizer implements ContextCustomizer { @@ -58,7 +58,7 @@ class BeanOverrideContextCustomizer implements ContextCustomizer {
public void customizeContext(ConfigurableApplicationContext context, MergedContextConfiguration mergedConfig) {
if (!(context instanceof BeanDefinitionRegistry registry)) {
throw new IllegalStateException("Cannot process bean overrides with an ApplicationContext " +
"that doesn't implement BeanDefinitionRegistry: " + context.getClass());
"that doesn't implement BeanDefinitionRegistry: " + context.getClass().getName());
}
registerInfrastructure(registry);
}

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

@ -52,7 +52,7 @@ class BeanOverrideRegistrar implements BeanFactoryAware { @@ -52,7 +52,7 @@ class BeanOverrideRegistrar implements BeanFactoryAware {
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
if (!(beanFactory instanceof ConfigurableBeanFactory cbf)) {
throw new IllegalStateException("Cannot process bean override with a BeanFactory " +
"that doesn't implement ConfigurableBeanFactory: " + beanFactory.getClass());
"that doesn't implement ConfigurableBeanFactory: " + beanFactory.getClass().getName());
}
this.beanFactory = cbf;
}

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

@ -49,29 +49,28 @@ public class BeanOverrideTestExecutionListener extends AbstractTestExecutionList @@ -49,29 +49,28 @@ public class BeanOverrideTestExecutionListener extends AbstractTestExecutionList
@Override
public void beforeTestMethod(TestContext testContext) throws Exception {
reinjectFieldsIfConfigured(testContext);
reinjectFieldsIfNecessary(testContext);
}
/**
* Process the test instance and make sure that fields flagged for bean
* overriding are processed.
* <p>Each field's value will be updated with the overridden bean instance.
* overriding are injected with the overridden bean instance.
*/
protected void injectFields(TestContext testContext) {
postProcessFields(testContext, (testMetadata, overrideRegistrar) -> overrideRegistrar.inject(
testMetadata.testInstance, testMetadata.overrideMetadata));
postProcessFields(testContext, (testMetadata, registrar) ->
registrar.inject(testMetadata.testInstance, testMetadata.overrideMetadata));
}
/**
* Process the test instance and make sure that fields flagged for bean
* overriding are processed.
* overriding are injected with the overridden bean instance, if necessary.
* <p>If a fresh instance is required, the field is nulled out and then
* re-injected with the overridden bean instance.
* <p>This method does nothing if the
* {@link DependencyInjectionTestExecutionListener#REINJECT_DEPENDENCIES_ATTRIBUTE}
* attribute is not present in the {@code TestContext}.
* attribute is not present in the {@code TestContext} with a value of {@link Boolean#TRUE}.
*/
protected void reinjectFieldsIfConfigured(TestContext testContext) throws Exception {
protected void reinjectFieldsIfNecessary(TestContext testContext) throws Exception {
if (Boolean.TRUE.equals(
testContext.getAttribute(DependencyInjectionTestExecutionListener.REINJECT_DEPENDENCIES_ATTRIBUTE))) {

Loading…
Cancel
Save