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;
+               }
        }
 }

Reply via email to