You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2016/04/12 11:34:47 UTC

wicket git commit: WICKET-6133 Failing test SpringBeanWithGenericsTest in 7.3.0.0 SNAPSHOT

Repository: wicket
Updated Branches:
  refs/heads/wicket-7.x e70c170ce -> a520f443a


WICKET-6133 Failing test SpringBeanWithGenericsTest in 7.3.0.0 SNAPSHOT

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a520f443
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a520f443
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a520f443

Branch: refs/heads/wicket-7.x
Commit: a520f443ada300c0f99e5ad8bf3fb19dc60eb71f
Parents: e70c170
Author: Andrea Del Bene <ad...@apache.org>
Authored: Tue Apr 12 11:32:08 2016 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Tue Apr 12 11:32:08 2016 +0200

----------------------------------------------------------------------
 .../annot/AnnotProxyFieldValueFactory.java      | 23 ++++++++++++++++----
 .../annot/SpringBeanWithGenericsTest.java       | 14 +++++++-----
 2 files changed, 28 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a520f443/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
----------------------------------------------------------------------
diff --git a/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java b/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
index efa333d..2054121 100644
--- a/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
+++ b/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.spring.injection.annot;
 
 import java.lang.reflect.Field;
+import java.util.AbstractMap.SimpleEntry;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
@@ -81,7 +82,8 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
 
 	private final ConcurrentMap<SpringBeanLocator, Object> cache = Generics.newConcurrentHashMap();
 
-	private final ConcurrentMap<Class<?>, String> beanNameCache = Generics.newConcurrentHashMap();
+	private final ConcurrentMap<SimpleEntry<Class<?>, Class<?>>, 
+								String> beanNameCache = Generics.newConcurrentHashMap();
 
 	private final boolean wrapInProxies;
 
@@ -188,15 +190,19 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
 		if (Strings.isEmpty(name))
 		{
 			Class<?> fieldType = field.getType();
+			SimpleEntry<Class<?>, Class<?>> keyPair =
+				new SimpleEntry<Class<?>, Class<?>>(fieldType, generic);
 
 			name = beanNameCache.get(fieldType);
 			if (name == null)
 			{
-				name = getBeanNameOfClass(contextLocator.getSpringContext(), fieldType, generic);
+				name = getBeanNameOfClass(contextLocator.getSpringContext(), fieldType, 
+					generic, field.getName());
 
 				if (name != null)
 				{
-					String tmpName = beanNameCache.putIfAbsent(fieldType, name);
+					
+					String tmpName = beanNameCache.putIfAbsent(keyPair, name);
 					if (tmpName != null)
 					{
 						name = tmpName;
@@ -216,11 +222,12 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
 	 *            spring application context
 	 * @param clazz
 	 *            bean class
+	 * @param fieldName 
 	 * @throws IllegalStateException
 	 * @return spring name of the bean
 	 */
 	private String getBeanNameOfClass(final ApplicationContext ctx, final Class<?> clazz,
-		final Class<?> generic)
+		final Class<?> generic, String fieldName)
 	{
 		// get the list of all possible matching beans
 		List<String> names = new ArrayList<>(
@@ -267,6 +274,14 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
 				}
 			}
 			
+			//use field name to find a match
+			int nameIndex = names.indexOf(fieldName);
+			
+			if (nameIndex > -1)
+			{
+				return names.get(nameIndex);
+			}
+			
 			if (generic != null)
 			{
 				return null;

http://git-wip-us.apache.org/repos/asf/wicket/blob/a520f443/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 f5e57e1..74dca27 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
@@ -136,12 +136,16 @@ public class SpringBeanWithGenericsTest extends Assert
 	@Test
 	public void listField() throws Exception
 	{
-		AnnotatedListField page = 
+		AnnotatedListField page =
 			tester.startPage(new AnnotatedListField());
 
-		assertNotNull(page.getStringsList());
-		assertEquals(3, page.getStringsList().size());
-
+		List<String> stringsList = page.getStringsList();
+		assertNotNull(stringsList);
+		assertEquals(3, stringsList.size());
+		assertThat(stringsList.get(0), is(equalTo("foo")));
+		assertThat(stringsList.get(1), is(equalTo("bar")));
+		assertThat(stringsList.get(2), is(equalTo("baz")));
+		
 		ArrayList<String> arrayListStrings = page.getArrayListStrings();
 		assertThat(arrayListStrings, is(notNullValue()));
 		assertThat(arrayListStrings.size(), is(3));
@@ -289,7 +293,7 @@ public class SpringBeanWithGenericsTest extends Assert
 		}
 
 		@Bean
-		public List<String> strings()
+		public List<String> stringsList()
 		{
 			return Arrays.asList("foo", "bar", "baz");
 		}