@Test(expectedExceptions = DescriptorValidationFailedException.class) public void testLoadExternalClassShouldThrowDescriptorValidationFailedExceptionWhenNeitherBeanNorClassWasFound() throws ClassNotFoundException { given(beanRegistryService.getBean(BEAN_NAME, INTERFACE_TO_CAST)).willThrow(new NoSuchBeanDefinitionException("error")); Collection<File> jarFiles = new ArrayList<>(); given(fileUtils.listFiles(folder, "jar")).willReturn(jarFiles); given(packageBasedClassFinder.findFirstOf(INTERFACE_TO_CAST, PACKAGE_NAME)).willThrow(new ClassNotFoundException()); underTest.loadExternalClass(PACKAGE_NAME, JAR_FOLDER_PATH, INTERFACE_TO_CAST); }
public <T> T loadExternalClass(final String packageName, final String jarFolderPath, final Class<T> interfaceToCast) { String beanName = createBeanName(packageName, interfaceToCast); T result; try { result = beanRegistryService.getBean(beanName, interfaceToCast); logger.info(GOT_BEAN_TEMPLATE, beanName, result.getClass().getName(), interfaceToCast); } catch (BeansException e) { logger.debug(String.format("Finding bean with name '%s' of type '%s' failed", beanName, interfaceToCast), e); result = initializeFromJars(packageName, jarFolderPath, interfaceToCast); beanRegistryService.register(beanName, result); } return result; }
ExternalJarClassInitializer { public <T> T loadExternalClass(final String packageName, final String jarFolderPath, final Class<T> interfaceToCast) { String beanName = createBeanName(packageName, interfaceToCast); T result; try { result = beanRegistryService.getBean(beanName, interfaceToCast); logger.info(GOT_BEAN_TEMPLATE, beanName, result.getClass().getName(), interfaceToCast); } catch (BeansException e) { logger.debug(String.format("Finding bean with name '%s' of type '%s' failed", beanName, interfaceToCast), e); result = initializeFromJars(packageName, jarFolderPath, interfaceToCast); beanRegistryService.register(beanName, result); } return result; } }
ExternalJarClassInitializer { public <T> T loadExternalClass(final String packageName, final String jarFolderPath, final Class<T> interfaceToCast) { String beanName = createBeanName(packageName, interfaceToCast); T result; try { result = beanRegistryService.getBean(beanName, interfaceToCast); logger.info(GOT_BEAN_TEMPLATE, beanName, result.getClass().getName(), interfaceToCast); } catch (BeansException e) { logger.debug(String.format("Finding bean with name '%s' of type '%s' failed", beanName, interfaceToCast), e); result = initializeFromJars(packageName, jarFolderPath, interfaceToCast); beanRegistryService.register(beanName, result); } return result; }  }
ExternalJarClassInitializer { public <T> T loadExternalClass(final String packageName, final String jarFolderPath, final Class<T> interfaceToCast) { String beanName = createBeanName(packageName, interfaceToCast); T result; try { result = beanRegistryService.getBean(beanName, interfaceToCast); logger.info(GOT_BEAN_TEMPLATE, beanName, result.getClass().getName(), interfaceToCast); } catch (BeansException e) { logger.debug(String.format("Finding bean with name '%s' of type '%s' failed", beanName, interfaceToCast), e); result = initializeFromJars(packageName, jarFolderPath, interfaceToCast); beanRegistryService.register(beanName, result); } return result; }  T loadExternalClass(final String packageName, final String jarFolderPath, final Class<T> interfaceToCast); }
ExternalJarClassInitializer { public <T> T loadExternalClass(final String packageName, final String jarFolderPath, final Class<T> interfaceToCast) { String beanName = createBeanName(packageName, interfaceToCast); T result; try { result = beanRegistryService.getBean(beanName, interfaceToCast); logger.info(GOT_BEAN_TEMPLATE, beanName, result.getClass().getName(), interfaceToCast); } catch (BeansException e) { logger.debug(String.format("Finding bean with name '%s' of type '%s' failed", beanName, interfaceToCast), e); result = initializeFromJars(packageName, jarFolderPath, interfaceToCast); beanRegistryService.register(beanName, result); } return result; }  T loadExternalClass(final String packageName, final String jarFolderPath, final Class<T> interfaceToCast);  }