@Override public void init() { for ( KernelExtensionFactory<?> kernelExtensionFactory : kernelExtensionFactories ) { try { Object kernelExtensionDependencies = getKernelExtensionDependencies( kernelExtensionFactory ); Lifecycle dependency = newInstance( kernelContext, kernelExtensionFactory, kernelExtensionDependencies ); Objects.requireNonNull( dependency, kernelExtensionFactory.toString() + " returned a null KernelExtension" ); life.add( dependencies.satisfyDependency( dependency ) ); } catch ( UnsatisfiedDependencyException exception ) { kernelExtensionFailureStrategy.handle( kernelExtensionFactory, exception ); } catch ( Throwable throwable ) { kernelExtensionFailureStrategy.handle( kernelExtensionFactory, throwable ); } } life.init(); }
@Test public void shouldConsultUnsatisfiedDependencyHandlerOnMissingDependencies() { // GIVEN KernelContext context = mock( KernelContext.class ); KernelExtensionFailureStrategy handler = mock( KernelExtensionFailureStrategy.class ); Dependencies dependencies = new Dependencies(); // that hasn't got anything. TestingExtensionFactory extensionFactory = new TestingExtensionFactory(); GlobalKernelExtensions extensions = new GlobalKernelExtensions( context, iterable( extensionFactory ), dependencies, handler ); // WHEN LifeSupport life = new LifeSupport(); life.add( extensions ); try { life.start(); // THEN verify( handler ).handle( eq( extensionFactory ), any( UnsatisfiedDependencyException.class ) ); } finally { life.shutdown(); } }
@Test public void shouldConsultUnsatisfiedDependencyHandlerOnFailingDependencyClasses() { // GIVEN KernelContext context = mock( KernelContext.class ); KernelExtensionFailureStrategy handler = mock( KernelExtensionFailureStrategy.class ); Dependencies dependencies = new Dependencies(); // that hasn't got anything. UninitializableKernelExtensionFactory extensionFactory = new UninitializableKernelExtensionFactory(); GlobalKernelExtensions extensions = new GlobalKernelExtensions( context, iterable( extensionFactory ), dependencies, handler ); // WHEN LifeSupport life = new LifeSupport(); life.add( extensions ); try { life.start(); // THEN verify( handler ).handle( eq( extensionFactory ), any( IllegalArgumentException.class ) ); } finally { life.shutdown(); } }
@Override public void init() { for ( KernelExtensionFactory<?> kernelExtensionFactory : kernelExtensionFactories ) { try { Object kernelExtensionDependencies = getKernelExtensionDependencies( kernelExtensionFactory ); Lifecycle dependency = newInstance( kernelContext, kernelExtensionFactory, kernelExtensionDependencies ); Objects.requireNonNull( dependency, kernelExtensionFactory.toString() + " returned a null KernelExtension" ); life.add( dependencies.satisfyDependency( dependency ) ); } catch ( UnsatisfiedDependencyException exception ) { kernelExtensionFailureStrategy.handle( kernelExtensionFactory, exception ); } catch ( Throwable throwable ) { kernelExtensionFailureStrategy.handle( kernelExtensionFactory, throwable ); } } life.init(); }