Compare qualifier value arrays with equality semantics
Closes gh-32106
(cherry picked from commit c5a75219ce)
This commit is contained in:
@@ -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 @@ public 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 @@ public 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 @@ public 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 @@ public 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 @@ public 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 @@ public 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 @@ public 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 @@ public 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 @@ public 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 @@ public 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 @@ public class QualifierAnnotationAutowireContextTests {
|
|||||||
@Qualifier
|
@Qualifier
|
||||||
@interface TestQualifierWithMultipleAttributes {
|
@interface TestQualifierWithMultipleAttributes {
|
||||||
|
|
||||||
String value() default "default";
|
String[] value() default "default";
|
||||||
|
|
||||||
int number();
|
int number();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,9 +58,10 @@ public 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
|
||||||
@@ -191,9 +192,10 @@ public 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
|
||||||
|
|||||||
Reference in New Issue
Block a user