@Override @Nullable public T getIfUnique() throws BeansException { String[] beanNames = getBeanNamesForType(requiredType); if (beanNames.length == 1) { return (T) getBean(beanNames[0]); } else { return null; } } @Override
@Override public <T> Map<String, T> getBeansOfType(@Nullable Class<T> type) throws BeansException { return getBeansOfType(type, true, true); }
@Override public Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType) throws BeansException { Map<String, Object> results = new LinkedHashMap<>(); for (String beanName : this.beans.keySet()) { if (findAnnotationOnBean(beanName, annotationType) != null) { results.put(beanName, getBean(beanName)); } } return results; }
@Test public void testNoBeansOfType() { StaticListableBeanFactory lbf = new StaticListableBeanFactory(); lbf.addBean("foo", new Object()); Map<String, ?> beans = BeanFactoryUtils.beansOfTypeIncludingAncestors(lbf, ITestBean.class, true, false); assertTrue(beans.isEmpty()); }
private DefaultMessageHandlerMethodFactory createInstance() { DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory(); factory.setBeanFactory(new StaticListableBeanFactory()); return factory; }
@Override public <T> T getBean(Class<T> requiredType, Object... args) throws BeansException { if (!ObjectUtils.isEmpty(args)) { throw new UnsupportedOperationException( "StaticListableBeanFactory does not support explicit bean creation arguments"); } return getBean(requiredType); }
@Test public void handleNavigationWithoutDecoration() { TestNavigationHandler targetHandler = new TestNavigationHandler(); beanFactory.addBean("jsfNavigationHandler", targetHandler); delNavHandler.handleNavigation(facesContext, "fromAction", "myViewId"); assertEquals("fromAction", targetHandler.lastFromAction); assertEquals("myViewId", targetHandler.lastOutcome); }
@Override public String[] getBeanNamesForType(@Nullable Class<?> type) { return getBeanNamesForType(ResolvableType.forClass(type)); }
@Override public boolean isTypeMatch(String name, @Nullable Class<?> typeToMatch) throws NoSuchBeanDefinitionException { Class<?> type = getType(name); return (typeToMatch == null || (type != null && typeToMatch.isAssignableFrom(type))); }
@Override public String[] getBeanNamesForAnnotation(Class<? extends Annotation> annotationType) { List<String> results = new ArrayList<>(); for (String beanName : this.beans.keySet()) { if (findAnnotationOnBean(beanName, annotationType) != null) { results.add(beanName); } } return StringUtils.toStringArray(results); }
@Test public void testHierarchicalCountBeansWithNonHierarchicalFactory() { StaticListableBeanFactory lbf = new StaticListableBeanFactory(); lbf.addBean("t1", new TestBean()); lbf.addBean("t2", new TestBean()); assertTrue(BeanFactoryUtils.countBeansIncludingAncestors(lbf) == 2); }
private void initializeFactory(DefaultMessageHandlerMethodFactory factory) { factory.setBeanFactory(new StaticListableBeanFactory()); factory.afterPropertiesSet(); }
@Override public Object getBean(String name, Object... args) throws BeansException { if (!ObjectUtils.isEmpty(args)) { throw new UnsupportedOperationException( "StaticListableBeanFactory does not support explicit bean creation arguments"); } return getBean(name); }
@Test public void handleNavigationWithDecoration() { TestDecoratingNavigationHandler targetHandler = new TestDecoratingNavigationHandler(); beanFactory.addBean("jsfNavigationHandler", targetHandler); delNavHandler.handleNavigation(facesContext, "fromAction", "myViewId"); assertEquals("fromAction", targetHandler.lastFromAction); assertEquals("myViewId", targetHandler.lastOutcome); // Original handler must have been invoked as well... assertEquals("fromAction", origNavHandler.lastFromAction); assertEquals("myViewId", origNavHandler.lastOutcome); }
@Override public String[] getBeanNamesForType(@Nullable Class<?> type, boolean includeNonSingletons, boolean allowEagerInit) { return getBeanNamesForType(ResolvableType.forClass(type)); }
@Override @Nullable public <A extends Annotation> A findAnnotationOnBean(String beanName, Class<A> annotationType) throws NoSuchBeanDefinitionException { Class<?> beanType = getType(beanName); return (beanType != null ? AnnotationUtils.findAnnotation(beanType, annotationType) : null); }
@Override public String[] getBeanNamesForAnnotation(Class<? extends Annotation> annotationType) { List<String> results = new ArrayList<>(); for (String beanName : this.beans.keySet()) { if (findAnnotationOnBean(beanName, annotationType) != null) { results.add(beanName); } } return StringUtils.toStringArray(results); }
@Test public void testFindsBeansOfTypeWithStaticFactory() { StaticListableBeanFactory lbf = new StaticListableBeanFactory(); TestBean t1 = new TestBean(); TestBean t2 = new TestBean(); DummyFactory t3 = new DummyFactory(); DummyFactory t4 = new DummyFactory(); t4.setSingleton(false); lbf.addBean("t1", t1); lbf.addBean("t2", t2); lbf.addBean("t3", t3); lbf.addBean("t4", t4); Map<String, ?> beans = BeanFactoryUtils.beansOfTypeIncludingAncestors(lbf, ITestBean.class, true, true); assertEquals(4, beans.size()); assertEquals(t1, beans.get("t1")); assertEquals(t2, beans.get("t2")); assertEquals(t3.getObject(), beans.get("t3")); assertTrue(beans.get("t4") instanceof TestBean); beans = BeanFactoryUtils.beansOfTypeIncludingAncestors(lbf, DummyFactory.class, true, true); assertEquals(2, beans.size()); assertEquals(t3, beans.get("&t3")); assertEquals(t4, beans.get("&t4")); beans = BeanFactoryUtils.beansOfTypeIncludingAncestors(lbf, FactoryBean.class, true, true); assertEquals(2, beans.size()); assertEquals(t3, beans.get("&t3")); assertEquals(t4, beans.get("&t4")); }
@Override public Stream<T> stream() { return Arrays.stream(getBeanNamesForType(requiredType)).map(name -> (T) getBean(name)); } @Override
private void initializeFactory(DefaultMessageHandlerMethodFactory factory) { factory.setBeanFactory(new StaticListableBeanFactory()); factory.afterPropertiesSet(); }