[ https://issues.apache.org/jira/browse/WICKET-2771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Juergen Donnerstag resolved WICKET-2771. ---------------------------------------- Resolution: Fixed Fix Version/s: 1.5-M1 1.4.8 Assignee: Juergen Donnerstag thanks > Please support "isPrimary" for @SpringBean > ------------------------------------------ > > Key: WICKET-2771 > URL: https://issues.apache.org/jira/browse/WICKET-2771 > Project: Wicket > Issue Type: Improvement > Components: wicket-spring > Reporter: Kathrin Baumgartner > Assignee: Juergen Donnerstag > Fix For: 1.4.8, 1.5-M1 > > > Our application must be adaptable for customer needs. We therefore need to be > able to inject customer specific services. Since all our services are > autowired, we could solve this by using the "primary" attribute. > Our propsal is to patch SpringBeanLocator: > private final String getBeanNameOfClass(ApplicationContext ctx, Class< ? > > clazz) { > // get the list of all possible matching beans > List<String> names = new > ArrayList<String>(Arrays.asList(BeanFactoryUtils > .beanNamesForTypeIncludingAncestors(ctx, clazz))); > Iterator<String> it = names.iterator(); > // filter out beans that are not condidates for autowiring > while (it.hasNext()) { > final String possibility = it.next(); > if (BeanFactoryUtils.isFactoryDereference(possibility) || > possibility.startsWith("scopedTarget.")) { > it.remove(); > } > } > if (names.isEmpty()) { > throw new IllegalStateException("bean of type [" + > clazz.getName() + "] not found"); > } else if (names.size() > 1) { > ///////////////////////// add this > /////////////////////////////////////////////// > for (String name : names){ > BeanDefinition beanDef = > ((AbstractApplicationContext)ctx).getBeanFactory().getBeanDefinition(name); > if(((AbstractBeanDefinition)beanDef).isPrimary()){ > return name; > } > } > > ////////////////////////////////////////////////////////////////////////////////////// > // found no match > StringBuilder msg = new StringBuilder(); > msg.append("more then one bean of type ["); > msg.append(clazz.getName()); > msg.append("] found, you have to specify the name of the > bean "); > msg.append("(@SpringBean(name=\"foo\")) in order to resolve > this conflict. "); > msg.append("Matched beans: "); > msg.append(Strings.join(",", names.toArray(new String[0]))); > throw new IllegalStateException(msg.toString()); > } > else{ > return names.get(0); > } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.