Skip to content

Commit b53fb13

Browse files
committed
Add tests for name-based dependency resolution against util:map
See gh-35690
1 parent 4b7b280 commit b53fb13

File tree

1 file changed

+33
-22
lines changed

1 file changed

+33
-22
lines changed

spring-beans/src/test/java/org/springframework/beans/factory/xml/UtilNamespaceHandlerTests.java

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.junit.jupiter.api.BeforeEach;
2929
import org.junit.jupiter.api.Test;
3030

31+
import org.springframework.beans.factory.config.DependencyDescriptor;
3132
import org.springframework.beans.factory.config.FieldRetrievingFactoryBean;
3233
import org.springframework.beans.factory.config.PropertiesFactoryBean;
3334
import org.springframework.beans.factory.parsing.ComponentDefinition;
@@ -46,7 +47,6 @@
4647
* @author Juergen Hoeller
4748
* @author Mark Fisher
4849
*/
49-
@SuppressWarnings("rawtypes")
5050
class UtilNamespaceHandlerTests {
5151

5252
private DefaultListableBeanFactory beanFactory;
@@ -55,7 +55,7 @@ class UtilNamespaceHandlerTests {
5555

5656

5757
@BeforeEach
58-
void setUp() {
58+
void setup() {
5959
this.beanFactory = new DefaultListableBeanFactory();
6060
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this.beanFactory);
6161
reader.setEventListener(this.listener);
@@ -109,17 +109,17 @@ void testNestedPropertyPath() {
109109

110110
@Test
111111
void testSimpleMap() {
112-
Map<?, ?> map = (Map) this.beanFactory.getBean("simpleMap");
112+
Map<?, ?> map = (Map<?, ?>) this.beanFactory.getBean("simpleMap");
113113
assertThat(map.get("foo")).isEqualTo("bar");
114-
Map<?, ?> map2 = (Map) this.beanFactory.getBean("simpleMap");
114+
Map<?, ?> map2 = (Map<?, ?>) this.beanFactory.getBean("simpleMap");
115115
assertThat(map).isSameAs(map2);
116116
}
117117

118118
@Test
119119
void testScopedMap() {
120-
Map<?, ?> map = (Map) this.beanFactory.getBean("scopedMap");
120+
Map<?, ?> map = (Map<?, ?>) this.beanFactory.getBean("scopedMap");
121121
assertThat(map.get("foo")).isEqualTo("bar");
122-
Map<?, ?> map2 = (Map) this.beanFactory.getBean("scopedMap");
122+
Map<?, ?> map2 = (Map<?, ?>) this.beanFactory.getBean("scopedMap");
123123
assertThat(map2.get("foo")).isEqualTo("bar");
124124
assertThat(map).isNotSameAs(map2);
125125
}
@@ -164,17 +164,23 @@ void testScopedSet() {
164164
}
165165

166166
@Test
167-
void testMapWithRef() {
168-
Map<?, ?> map = (Map) this.beanFactory.getBean("mapWithRef");
167+
void testMapWithRef() throws Exception {
168+
Map<?, ?> map = (Map<?, ?>) this.beanFactory.getBean("mapWithRef");
169169
assertThat(map).isInstanceOf(TreeMap.class);
170170
assertThat(map.get("bean")).isEqualTo(this.beanFactory.getBean("testBean"));
171+
assertThat(this.beanFactory.resolveDependency(
172+
new DependencyDescriptor(getClass().getDeclaredField("mapWithRef"), true), null))
173+
.isSameAs(map);
171174
}
172175

173176
@Test
174-
void testMapWithTypes() {
175-
Map<?, ?> map = (Map) this.beanFactory.getBean("mapWithTypes");
177+
void testMapWithTypes() throws Exception {
178+
Map<?, ?> map = (Map<?, ?>) this.beanFactory.getBean("mapWithTypes");
176179
assertThat(map).isInstanceOf(LinkedCaseInsensitiveMap.class);
177180
assertThat(map.get("bean")).isEqualTo(this.beanFactory.getBean("testBean"));
181+
assertThat(this.beanFactory.resolveDependency(
182+
new DependencyDescriptor(getClass().getDeclaredField("mapWithTypes"), true), null))
183+
.isSameAs(map);
178184
}
179185

180186
@Test
@@ -240,11 +246,11 @@ void testNestedInCollections() {
240246
void testCircularCollections() {
241247
TestBean bean = (TestBean) this.beanFactory.getBean("circularCollectionsBean");
242248

243-
assertThat(bean.getSomeList()).singleElement().isEqualTo(bean);
244-
assertThat(bean.getSomeSet()).singleElement().isEqualTo(bean);
249+
assertThat(bean.getSomeList()).singleElement().isSameAs(bean);
250+
assertThat(bean.getSomeSet()).singleElement().isSameAs(bean);
245251
assertThat(bean.getSomeMap()).hasSize(1).allSatisfy((key, value) -> {
246252
assertThat(key).isEqualTo("foo");
247-
assertThat(value).isEqualTo(bean);
253+
assertThat(value).isSameAs(bean);
248254
});
249255
}
250256

@@ -255,17 +261,17 @@ void testCircularCollectionBeansStartingWithList() {
255261

256262
List<?> list = bean.getSomeList();
257263
assertThat(Proxy.isProxyClass(list.getClass())).isTrue();
258-
assertThat(list).singleElement().isEqualTo(bean);
264+
assertThat(list).singleElement().isSameAs(bean);
259265

260266
Set<?> set = bean.getSomeSet();
261267
assertThat(Proxy.isProxyClass(set.getClass())).isFalse();
262-
assertThat(set).singleElement().isEqualTo(bean);
268+
assertThat(set).singleElement().isSameAs(bean);
263269

264270
Map<?, ?> map = bean.getSomeMap();
265271
assertThat(Proxy.isProxyClass(map.getClass())).isFalse();
266272
assertThat(map).hasSize(1).allSatisfy((key, value) -> {
267273
assertThat(key).isEqualTo("foo");
268-
assertThat(value).isEqualTo(bean);
274+
assertThat(value).isSameAs(bean);
269275
});
270276
}
271277

@@ -276,17 +282,17 @@ void testCircularCollectionBeansStartingWithSet() {
276282

277283
List<?> list = bean.getSomeList();
278284
assertThat(Proxy.isProxyClass(list.getClass())).isFalse();
279-
assertThat(list).singleElement().isEqualTo(bean);
285+
assertThat(list).singleElement().isSameAs(bean);
280286

281287
Set<?> set = bean.getSomeSet();
282288
assertThat(Proxy.isProxyClass(set.getClass())).isTrue();
283-
assertThat(set).singleElement().isEqualTo(bean);
289+
assertThat(set).singleElement().isSameAs(bean);
284290

285291
Map<?, ?> map = bean.getSomeMap();
286292
assertThat(Proxy.isProxyClass(map.getClass())).isFalse();
287293
assertThat(map).hasSize(1).allSatisfy((key, value) -> {
288294
assertThat(key).isEqualTo("foo");
289-
assertThat(value).isEqualTo(bean);
295+
assertThat(value).isSameAs(bean);
290296
});
291297
}
292298

@@ -297,17 +303,17 @@ void testCircularCollectionBeansStartingWithMap() {
297303

298304
List<?> list = bean.getSomeList();
299305
assertThat(Proxy.isProxyClass(list.getClass())).isFalse();
300-
assertThat(list).singleElement().isEqualTo(bean);
306+
assertThat(list).singleElement().isSameAs(bean);
301307

302308
Set<?> set = bean.getSomeSet();
303309
assertThat(Proxy.isProxyClass(set.getClass())).isFalse();
304-
assertThat(set).singleElement().isEqualTo(bean);
310+
assertThat(set).singleElement().isSameAs(bean);
305311

306312
Map<?, ?> map = bean.getSomeMap();
307313
assertThat(Proxy.isProxyClass(map.getClass())).isTrue();
308314
assertThat(map).hasSize(1).allSatisfy((key, value) -> {
309315
assertThat(key).isEqualTo("foo");
310-
assertThat(value).isEqualTo(bean);
316+
assertThat(value).isSameAs(bean);
311317
});
312318
}
313319

@@ -372,4 +378,9 @@ void testLocalOverrideTrue() {
372378
assertThat(props).as("Incorrect property value").containsEntry("foo2", "local2");
373379
}
374380

381+
382+
// For DependencyDescriptor resolution
383+
private Map<String, TestBean> mapWithRef;
384+
private Map<String, TestBean> mapWithTypes;
385+
375386
}

0 commit comments

Comments
 (0)