Compare qualifier value arrays with equality semantics
Closes gh-32106
This commit is contained in:
parent
89e7174cc4
commit
c5a75219ce
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2023 the original author or authors.
|
* Copyright 2002-2024 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -292,7 +292,7 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa
|
||||||
if (actualValue != null) {
|
if (actualValue != null) {
|
||||||
actualValue = typeConverter.convertIfNecessary(actualValue, expectedValue.getClass());
|
actualValue = typeConverter.convertIfNecessary(actualValue, expectedValue.getClass());
|
||||||
}
|
}
|
||||||
if (!expectedValue.equals(actualValue)) {
|
if (!ObjectUtils.nullSafeEquals(expectedValue, actualValue)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,12 +63,12 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
new RootBeanDefinition(QualifiedFieldTestBean.class));
|
new RootBeanDefinition(QualifiedFieldTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
|
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -81,12 +81,13 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.satisfies(ex -> {
|
.isThrownBy(context::refresh)
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
});
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,9 +101,10 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(UnsatisfiedDependencyException.class)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.isThrownBy(context::refresh)
|
||||||
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -205,12 +207,13 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedFieldTestBean.class));
|
new RootBeanDefinition(QualifiedFieldTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.satisfies(ex -> {
|
.isThrownBy(context::refresh)
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
});
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -227,12 +230,13 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.satisfies(ex -> {
|
.isThrownBy(context::refresh)
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
});
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -249,9 +253,10 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(UnsatisfiedDependencyException.class)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.isThrownBy(context::refresh)
|
||||||
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -374,12 +379,13 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.satisfies(ex -> {
|
.isThrownBy(context::refresh)
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
});
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -451,12 +457,13 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.satisfies(ex -> {
|
.isThrownBy(context::refresh)
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
});
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -507,12 +514,13 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.satisfies(ex -> {
|
.isThrownBy(context::refresh)
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
});
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -574,9 +582,10 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean.class));
|
new RootBeanDefinition(QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(UnsatisfiedDependencyException.class)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.isThrownBy(context::refresh)
|
||||||
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -752,7 +761,7 @@ class QualifierAnnotationAutowireContextTests {
|
||||||
@Qualifier
|
@Qualifier
|
||||||
@interface TestQualifierWithMultipleAttributes {
|
@interface TestQualifierWithMultipleAttributes {
|
||||||
|
|
||||||
String value() default "default";
|
String[] value() default "default";
|
||||||
|
|
||||||
int number();
|
int number();
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,9 +58,10 @@ class QualifierAnnotationTests {
|
||||||
BeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
|
BeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
|
||||||
reader.loadBeanDefinitions(CONFIG_LOCATION);
|
reader.loadBeanDefinitions(CONFIG_LOCATION);
|
||||||
context.registerSingleton("testBean", NonQualifiedTestBean.class);
|
context.registerSingleton("testBean", NonQualifiedTestBean.class);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.withMessageContaining("found 6");
|
.isThrownBy(context::refresh)
|
||||||
|
.withMessageContaining("found 6");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -192,9 +193,10 @@ class QualifierAnnotationTests {
|
||||||
BeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
|
BeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
|
||||||
reader.loadBeanDefinitions(CONFIG_LOCATION);
|
reader.loadBeanDefinitions(CONFIG_LOCATION);
|
||||||
context.registerSingleton("testBean", QualifiedByAttributesTestBean.class);
|
context.registerSingleton("testBean", QualifiedByAttributesTestBean.class);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
|
||||||
context::refresh)
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
.withMessageContaining("found 6");
|
.isThrownBy(context::refresh)
|
||||||
|
.withMessageContaining("found 6");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue