@Override public T getObject() throws BeansException { T resolved = resolveBean(requiredType, null, false); if (resolved == null) { throw new NoSuchBeanDefinitionException(requiredType); } return resolved; } @Override
private Object getBeanFromSpringContext(String beanName, Injectee injectee, final boolean required) { try { DependencyDescriptor dependencyDescriptor = createSpringDependencyDescriptor(injectee); Set<String> autowiredBeanNames = new HashSet<>(1); autowiredBeanNames.add(beanName); return ctx.getAutowireCapableBeanFactory().resolveDependency(dependencyDescriptor, null, autowiredBeanNames, null); } catch (NoSuchBeanDefinitionException e) { if (required) { LOGGER.warning(e.getMessage()); throw e; } return null; } }
public Authentication authenticate(Authentication authentication) throws AuthenticationException { synchronized (delegateMonitor) { if (delegate == null) { Assert.state(beanFactory != null, () -> "BeanFactory must be set to resolve " + authMgrBean); try { delegate = beanFactory.getBean(authMgrBean, AuthenticationManager.class); } catch (NoSuchBeanDefinitionException e) { if (BeanIds.AUTHENTICATION_MANAGER.equals(e.getBeanName())) { throw new NoSuchBeanDefinitionException( BeanIds.AUTHENTICATION_MANAGER, AuthenticationManagerFactoryBean.MISSING_BEAN_ERROR_MESSAGE); } throw e; } } } return delegate.authenticate(authentication); }
/** * Return a short useful message for common BeansExceptions. * @param ex BeansException * @return String short descriptive message */ protected String shortMessage(BeansException ex) { if(ex instanceof NoSuchBeanDefinitionException) { NoSuchBeanDefinitionException nsbde = (NoSuchBeanDefinitionException)ex; return "Missing required bean: " + (nsbde.getBeanName()!=null ? "\""+nsbde.getBeanName()+"\" " : "") + (nsbde.getBeanType()!=null ? "\""+nsbde.getBeanType()+"\" " : ""); } if(ex instanceof BeanCreationException) { BeanCreationException bce = (BeanCreationException)ex; return bce.getBeanName()== null ? "" : "Can't create bean '"+bce.getBeanName()+"'"; } return ex.getMessage().replace('\n', ' '); }
@Test public void missingAuthenticationManagerGivesSensibleErrorMessage() { try { setContext("<http auto-config='true' />"); fail(); } catch (BeanCreationException e) { Throwable cause = ultimateCause(e); assertThat(cause instanceof NoSuchBeanDefinitionException).isTrue(); NoSuchBeanDefinitionException nsbe = (NoSuchBeanDefinitionException) cause; assertThat(nsbe.getBeanName()).isEqualTo(BeanIds.AUTHENTICATION_MANAGER); assertThat(nsbe.getMessage()).endsWith( AuthenticationManagerFactoryBean.MISSING_BEAN_ERROR_MESSAGE); } }
@Test public void unknownCacheResolver() { try { this.simpleService.unknownCacheResolver(new Object()); fail("Should have failed, no cache resolver with that name"); } catch (NoSuchBeanDefinitionException ex) { assertEquals("Wrong bean name in exception", "unknownCacheResolver", ex.getBeanName()); } }
@Test public void aliasing() { BeanFactory bf = getBeanFactory(); if (!(bf instanceof ConfigurableBeanFactory)) { return; } ConfigurableBeanFactory cbf = (ConfigurableBeanFactory) bf; String alias = "rods alias"; try { cbf.getBean(alias); fail("Shouldn't permit factory get on normal bean"); } catch (NoSuchBeanDefinitionException ex) { // Ok assertTrue(alias.equals(ex.getBeanName())); } // Create alias cbf.registerAlias("rod", alias); Object rod = getBeanFactory().getBean("rod"); Object aliasRod = getBeanFactory().getBean(alias); assertTrue(rod == aliasRod); }
@Override public T getObject(Object... args) throws BeansException { T resolved = resolveBean(requiredType, args, false); if (resolved == null) { throw new NoSuchBeanDefinitionException(requiredType); } return resolved; } @Override
public AuthenticationManager getObject() throws Exception { try { return (AuthenticationManager) bf.getBean(BeanIds.AUTHENTICATION_MANAGER); } catch (NoSuchBeanDefinitionException e) { if (!BeanIds.AUTHENTICATION_MANAGER.equals(e.getBeanName())) { throw e; } UserDetailsService uds = getBeanOrNull(UserDetailsService.class); if (uds == null) { throw new NoSuchBeanDefinitionException(BeanIds.AUTHENTICATION_MANAGER, MISSING_BEAN_ERROR_MESSAGE); } DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); provider.setUserDetailsService(uds); PasswordEncoder passwordEncoder = getBeanOrNull(PasswordEncoder.class); if (passwordEncoder != null) { provider.setPasswordEncoder(passwordEncoder); } provider.afterPropertiesSet(); return new ProviderManager(Arrays.<AuthenticationProvider> asList(provider)); } }
@Test public void getBeanByTypeAmbiguityRaisesException() { ApplicationContext context = new AnnotationConfigApplicationContext(TwoTestBeanConfig.class); try { context.getBean(TestBean.class); } catch (NoSuchBeanDefinitionException ex) { assertThat(ex.getMessage(), allOf( containsString("No qualifying bean of type '" + TestBean.class.getName() + "'"), containsString("tb1"), containsString("tb2") ) ); } }
@Test @SuppressWarnings("resource") public void handlerBeanNotFound() { MockServletContext sc = new MockServletContext(""); XmlWebApplicationContext root = new XmlWebApplicationContext(); root.setServletContext(sc); root.setConfigLocations("/org/springframework/web/servlet/handler/map1.xml"); root.refresh(); XmlWebApplicationContext wac = new XmlWebApplicationContext(); wac.setParent(root); wac.setServletContext(sc); wac.setNamespace("map2err"); wac.setConfigLocations("/org/springframework/web/servlet/handler/map2err.xml"); try { wac.refresh(); fail("Should have thrown NoSuchBeanDefinitionException"); } catch (FatalBeanException ex) { NoSuchBeanDefinitionException nestedEx = (NoSuchBeanDefinitionException) ex.getCause(); assertEquals("mainControlle", nestedEx.getBeanName()); } }
@Override public void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException { if (this.beanDefinitionMap.remove(beanName) == null) { throw new NoSuchBeanDefinitionException(beanName); } }
public Authentication authenticate(Authentication authentication) throws AuthenticationException { synchronized (delegateMonitor) { if (delegate == null) { Assert.state(beanFactory != null, () -> "BeanFactory must be set to resolve " + authMgrBean); try { delegate = beanFactory.getBean(authMgrBean, AuthenticationManager.class); } catch (NoSuchBeanDefinitionException e) { if (BeanIds.AUTHENTICATION_MANAGER.equals(e.getBeanName())) { throw new NoSuchBeanDefinitionException( BeanIds.AUTHENTICATION_MANAGER, AuthenticationManagerFactoryBean.MISSING_BEAN_ERROR_MESSAGE); } throw e; } } } return delegate.authenticate(authentication); }
@Test public void getBeanByTypeRaisesNoSuchBeanDefinitionException() { ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); // attempt to retrieve a bean that does not exist Class<?> targetType = Pattern.class; try { context.getBean(targetType); fail("Should have thrown NoSuchBeanDefinitionException"); } catch (NoSuchBeanDefinitionException ex) { assertThat(ex.getMessage(), containsString(format("No qualifying bean of type '%s'", targetType.getName()))); } }
assertTrue(ex.getRootCause() instanceof NoSuchBeanDefinitionException); NoSuchBeanDefinitionException innerEx = (NoSuchBeanDefinitionException) ex.getRootCause(); assertEquals("testBean9", innerEx.getBeanName());
@Override public BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException { BeanDefinition bd = this.beanDefinitionMap.get(beanName); if (bd == null) { throw new NoSuchBeanDefinitionException(beanName); } return bd; }
public AuthenticationManager getObject() throws Exception { try { return (AuthenticationManager) bf.getBean(BeanIds.AUTHENTICATION_MANAGER); } catch (NoSuchBeanDefinitionException e) { if (!BeanIds.AUTHENTICATION_MANAGER.equals(e.getBeanName())) { throw e; } UserDetailsService uds = getBeanOrNull(UserDetailsService.class); if (uds == null) { throw new NoSuchBeanDefinitionException(BeanIds.AUTHENTICATION_MANAGER, MISSING_BEAN_ERROR_MESSAGE); } DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); provider.setUserDetailsService(uds); PasswordEncoder passwordEncoder = getBeanOrNull(PasswordEncoder.class); if (passwordEncoder != null) { provider.setPasswordEncoder(passwordEncoder); } provider.afterPropertiesSet(); return new ProviderManager(Arrays.<AuthenticationProvider> asList(provider)); } }
} catch (NoSuchBeanDefinitionException e) { if (logger.isDebugEnabled()) { logger.debug(e.getMessage(), e);
@Override public T getObject(Object... args) throws BeansException { T resolved = resolveBean(requiredType, args, false); if (resolved == null) { throw new NoSuchBeanDefinitionException(requiredType); } return resolved; } @Override
@Override public Object postProcess(Object bean, String beanName, Method method, List<Annotation> annotations) { String channelName = MessagingAnnotationUtils .resolveAttribute(annotations, AnnotationUtils.VALUE, String.class); Assert.hasText(channelName, "The channel ('value' attribute of @InboundChannelAdapter) can't be empty."); MessageSource<?> messageSource = null; try { messageSource = createMessageSource(bean, beanName, method); } catch (NoSuchBeanDefinitionException e) { if (this.logger.isDebugEnabled()) { this.logger.debug("Skipping endpoint creation; " + e.getMessage() + "; perhaps due to some '@Conditional' annotation."); } return null; } SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter(); adapter.setOutputChannelName(channelName); adapter.setSource(messageSource); configurePollingEndpoint(adapter, annotations); return adapter; }