You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2010/03/13 20:30:04 UTC

svn commit: r922659 - /wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java

Author: jdonnerstag
Date: Sat Mar 13 19:30:03 2010
New Revision: 922659

URL: http://svn.apache.org/viewvc?rev=922659&view=rev
Log:
WICKET-2771 fixed Please support "isPrimary" for @SpringBean

Modified:
    wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java

Modified: wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java?rev=922659&r1=922658&r2=922659&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java (original)
+++ wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java Sat Mar 13 19:30:03 2010
@@ -28,7 +28,10 @@ import org.apache.wicket.util.lang.Objec
 import org.apache.wicket.util.string.Strings;
 import org.springframework.beans.factory.BeanFactoryUtils;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.AbstractApplicationContext;
 
 /**
  * Implementation of {@link IProxyTargetLocator} that can locate beans within a spring application
@@ -106,7 +109,7 @@ public class SpringBeanLocator implement
 	 * @throws IllegalStateException
 	 * @return spring name of the bean
 	 */
-	private final String getBeanNameOfClass(ApplicationContext ctx, Class< ? > clazz)
+	private final String getBeanNameOfClass(final ApplicationContext ctx, final Class< ? > clazz)
 	{
 		// get the list of all possible matching beans
 		List<String> names = new ArrayList<String>(Arrays.asList(BeanFactoryUtils
@@ -130,6 +133,22 @@ public class SpringBeanLocator implement
 		}
 		else if (names.size() > 1)
 		{
+			if (ctx instanceof AbstractApplicationContext)
+			{
+				for (String name : names)
+				{
+					BeanDefinition beanDef = ((AbstractApplicationContext)ctx).getBeanFactory()
+							.getBeanDefinition(name);
+					if (beanDef instanceof AbstractBeanDefinition)
+					{
+						if (((AbstractBeanDefinition)beanDef).isPrimary())
+						{
+							return name;
+						}
+					}
+				}
+			}
+
 			StringBuilder msg = new StringBuilder();
 			msg.append("more then one bean of type [");
 			msg.append(clazz.getName());