Repository: wicket Updated Branches: refs/heads/master 6d0eae5f4 -> 3a36b0a23
WICKET-5808 Add support for extracting the generic element for List/Set/Map subtypes Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/cc075e9c Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/cc075e9c Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/cc075e9c Branch: refs/heads/master Commit: cc075e9c25050ff8b9153d2b759f9c6d783c22f1 Parents: 6d0eae5 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Thu Jan 29 00:28:46 2015 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Thu Jan 29 00:28:46 2015 +0200 ---------------------------------------------------------------------- .../apache/wicket/spring/SpringBeanLocator.java | 8 ++--- .../wicket/spring/FieldBeansCollectorTest.java | 18 +++++----- .../annot/SpringBeanWithGenericsTest.java | 35 ++++++++++++++++++-- 3 files changed, 45 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/cc075e9c/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java ---------------------------------------------------------------------- diff --git a/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java b/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java index 1f51ef9..60ccbfa 100644 --- a/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java +++ b/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java @@ -137,7 +137,7 @@ public class SpringBeanLocator implements IProxyTargetLocator /** * If the field type is a collection (Map, Set or List) extracts type - * informations about its elements. + * information about its elements. * * @param fieldResolvableType * the resolvable type of the field @@ -147,13 +147,13 @@ public class SpringBeanLocator implements IProxyTargetLocator { Class<?> clazz = fieldResolvableType.resolve(); - if (clazz == Set.class || clazz == List.class) + if (Set.class.isAssignableFrom(clazz) || List.class.isAssignableFrom(clazz)) { return fieldResolvableType.getGeneric(); } - else if (clazz == Map.class) + else if (Map.class.isAssignableFrom(clazz)) { - return fieldResolvableType.getGeneric(1); + return fieldResolvableType.getGeneric(1); } return null; http://git-wip-us.apache.org/repos/asf/wicket/blob/cc075e9c/wicket-spring/src/test/java/org/apache/wicket/spring/FieldBeansCollectorTest.java ---------------------------------------------------------------------- diff --git a/wicket-spring/src/test/java/org/apache/wicket/spring/FieldBeansCollectorTest.java b/wicket-spring/src/test/java/org/apache/wicket/spring/FieldBeansCollectorTest.java index 4a20d44..62597f4 100644 --- a/wicket-spring/src/test/java/org/apache/wicket/spring/FieldBeansCollectorTest.java +++ b/wicket-spring/src/test/java/org/apache/wicket/spring/FieldBeansCollectorTest.java @@ -29,28 +29,28 @@ import org.springframework.core.ResolvableType; public class FieldBeansCollectorTest { public List<List<String>> listOfStringList; - + public List genericList; - + @Test public void resolveGenericList() throws Exception { Field field = getClass().getField("listOfStringList"); ResolvableType resolvableType = ResolvableType.forField(field); - + FieldBeansCollector fieldBeansCollector = new FieldBeansCollector(resolvableType); - - assertTrue(fieldBeansCollector.getFieldType() == FieldType.LIST); + + assertTrue(fieldBeansCollector.getFieldType() == FieldType.LIST); } - + @Test public void resolveRowList() throws Exception { Field field = getClass().getField("genericList"); - + ResolvableType resolvableType = ResolvableType.forField(field); FieldBeansCollector fieldBeansCollector = new FieldBeansCollector(resolvableType); - + assertTrue(fieldBeansCollector.getFieldType() == FieldType.LIST); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/wicket/blob/cc075e9c/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java ---------------------------------------------------------------------- diff --git a/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java b/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java index 782dc00..245cf90 100644 --- a/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java +++ b/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java @@ -16,6 +16,11 @@ */ package org.apache.wicket.spring.injection.annot; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; + +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -89,13 +94,12 @@ public class SpringBeanWithGenericsTest extends Assert tester.startPage(new AnnotatedMapOfBeanGenericQualifier()); Map<String, BeanWithGeneric<?>> beans = page.getBeans(); - + assertNotNull(beans); assertEquals(2, beans.size()); - + assertTrue(beans.containsKey("stringBean")); assertTrue(beans.containsKey("integerBean")); - } @Test @@ -121,6 +125,13 @@ public class SpringBeanWithGenericsTest extends Assert assertNotNull(page.getStringsList()); assertEquals(3, page.getStringsList().size()); + + ArrayList<String> arrayListStrings = page.getArrayListStrings(); + assertThat(arrayListStrings, is(notNullValue())); + assertThat(arrayListStrings.size(), is(3)); + assertThat(arrayListStrings.get(0), is(equalTo("one"))); + assertThat(arrayListStrings.get(1), is(equalTo("two"))); + assertThat(arrayListStrings.get(2), is(equalTo("three"))); } @Test @@ -197,6 +208,14 @@ public class SpringBeanWithGenericsTest extends Assert { return stringsList; } + + @SpringBean + private ArrayList<String> arrayListStrings; + + public ArrayList<String> getArrayListStrings() + { + return arrayListStrings; + } } @Configuration @@ -219,5 +238,15 @@ public class SpringBeanWithGenericsTest extends Assert { return Arrays.asList("foo", "bar", "baz"); } + + @Bean + public ArrayList<String> arrayListStrings() + { + ArrayList<String> arrayList = new ArrayList(); + arrayList.add("one"); + arrayList.add("two"); + arrayList.add("three"); + return arrayList; + } } }