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,8 +63,8 @@ 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");
|
||||||
|
@ -81,8 +81,9 @@ 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)
|
||||||
|
.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");
|
||||||
|
@ -100,8 +101,9 @@ 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)
|
||||||
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,8 +207,9 @@ 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)
|
||||||
|
.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");
|
||||||
|
@ -227,8 +230,9 @@ 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)
|
||||||
|
.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");
|
||||||
|
@ -249,8 +253,9 @@ 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)
|
||||||
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,8 +379,9 @@ 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)
|
||||||
|
.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");
|
||||||
|
@ -451,8 +457,9 @@ 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)
|
||||||
|
.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");
|
||||||
|
@ -507,8 +514,9 @@ 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)
|
||||||
|
.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");
|
||||||
|
@ -574,8 +582,9 @@ 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)
|
||||||
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.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,8 +58,9 @@ 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)
|
||||||
|
.isThrownBy(context::refresh)
|
||||||
.withMessageContaining("found 6");
|
.withMessageContaining("found 6");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,8 +193,9 @@ 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)
|
||||||
|
.isThrownBy(context::refresh)
|
||||||
.withMessageContaining("found 6");
|
.withMessageContaining("found 6");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue