@Test(expected = ProvisionException.class) public void testEnforcingRegistrationOnInitFastFail() { Injector injector = LifecycleInjector.builder() .withModules( new AbstractModule() { @Override protected void configure() { bind(EurekaInstanceConfig.class).to(LocalEurekaInstanceConfig.class); bind(EurekaClientConfig.class).to(BadServerEurekaClientConfig2.class); bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey1DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON); } } ) .build().createInjector(); LifecycleManager lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); } catch (Exception e) { throw new RuntimeException(e); } // this will throw a Guice ProvisionException for the constructor failure EurekaClient client = injector.getInstance(EurekaClient.class); }
@Test public void testNameSpaceInjection() throws Exception { ConfigurationManager.getConfigInstance().setProperty("testnamespace.serviceUrl.default", SERVICE_URI); Injector injector = LifecycleInjector.builder() .withBootstrapModule(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.bind(String.class).annotatedWith(EurekaNamespace.class).toInstance("testnamespace."); } }) .build() .createInjector(); DefaultEurekaClientConfig clientConfig = injector.getInstance(DefaultEurekaClientConfig.class); List<String> serviceUrls = clientConfig.getEurekaServerServiceUrls("default"); assertThat(serviceUrls.get(0), is(equalTo(SERVICE_URI))); }
adminResourceInjector = LifecycleInjector .builder() .inStage(Stage.DEVELOPMENT) .withMode(LifecycleInjectorMode.SIMULATED_CHILD_INJECTORS) .usingBasePackages("com.netflix.explorers") .withModules(getAdditionalBindings()) .build() .createInjector(); adminResourceInjector.getInstance(LifecycleManager.class).start();
private Injector getInjector() throws ServiceManagerException { Injector injector = LifecycleInjector .builder() .withBootstrapModule(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.bindConfigurationProvider().toInstance(new SystemConfigurationProvider()); } }) .withAdditionalBootstrapModules(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { CompositeConfigurationProvider compositeConfigurationProvider = new CompositeConfigurationProvider(); for (Properties property : getConfigurations()) { compositeConfigurationProvider.add(new PropertiesConfigurationProvider(property)); } binder.bindConfigurationProvider().toInstance(compositeConfigurationProvider); } }) .withModuleClasses(modules.getResources()) .build() .createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); } catch (Exception e) { throw new ServiceManagerException("unable to start the lifecycle manager", e); } return injector; }
public static void create(AtomicReference<Injector> injector, final Properties properties, Module... modules) throws Exception { // Create the injector injector.set(LifecycleInjector.builder() .withBootstrapModule( new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.bindConfigurationProvider().toInstance( new PropertiesConfigurationProvider(properties)); } } ) .withModules( new RoutingPlugin(), new ServerSinkPlugin(), new SuroInputPlugin(), new SuroDynamicPropertyModule(), new SuroModule(), StatusServer.createJerseyServletModule() ) .withAdditionalModules(modules) .build().createInjector()); }
builder.withAdditionalBootstrapModules(bootstrapModules); builder.withModules(PostInjectorModule.forLifecycleInjectorBuilder(builder)); injector = builder.build().createInjector(); startLifecycleManager();
/** Start up governator with an arbitrary list of modules. */ public void start(Iterable<Module> modules) throws Exception { injector = LifecycleInjector.builder() .ignoringAllAutoBindClasses() .withModules(modules) .build() .createInjector(); LifecycleManager lcMgr = injector.getInstance(LifecycleManager.class); lcMgr.start(); }
@Test public void inject() throws Exception { Assumptions.assumeTrue(isJava8(), "requires java 8"); // On JDK 9: // Caused by: java.lang.ClassNotFoundException: javax.annotation.Resource // at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) // at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) // at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) Injector injector = LifecycleInjector.builder() .usingBasePackages("com.netflix") .withAdditionalModules(new AbstractModule() { @Override protected void configure() { Config config = MapConfig.builder() .put("spectator.nflx.enabled", "false") .build(); bind(Config.class).toInstance(config); } }) .build() .createInjector(); LifecycleManager lcMgr = injector.getInstance(LifecycleManager.class); lcMgr.start(); Assertions.assertNotNull(injector.getInstance(Plugin.class)); lcMgr.close(); }
protected void setup(Module[] modules) { LifecycleInjectorBuilder builder = LifecycleInjector.builder() .withModuleTransformer(new OverrideAllDuplicateBindings()); builder.withAdditionalModules(PostInjectorModule.forLifecycleInjectorBuilder(builder)); builder.withAdditionalModules(modules); // Extensions builder.withAdditionalModules(new ExtensionLoader(!withExt).asModuleArray(serverType)); bindMetricsRegistry(builder); EurekaHealthStatusModule healthStatusModule = new EurekaHealthStatusModule(); builder.withAdditionalModules(healthStatusModule); injector = builder.build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); // Admin console if (withAdminUI) { EmbeddedKaryonAdminModule adminUIModule = createAdminUIModule(); webAdminInjector = injector.createChildInjector(adminUIModule); } } catch (Exception e) { throw new RuntimeException("Container setup failure", e); } }
@Override public LifecycleInjectorBuilder withModules( Iterable<? extends Module> modules) { this.delegate = delegate.withAdditionalModules(modules); return this; }
protected void setup(Module[] modules) { LifecycleInjectorBuilder builder = LifecycleInjector.builder(); builder.withAdditionalModules(modules); // Extensions builder.withAdditionalModules(new ExtensionLoader(!withExt).asModuleArray()); // Admin console if (withAdminUI) { bindConfigurationProvider(builder); bindDashboard(builder); } injector = builder.build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); } catch (Exception e) { throw new RuntimeException("Container setup failure", e); } }
builder.withAdditionalBootstrapModules(injector.getInstance(Key.get(new TypeLiteral<Set<BootstrapModule>>() {}))); builder.withAdditionalModuleClasses(main); } catch (Exception e) { throw new ProvisionException(String.format("Failed to create module for main class '%s'", main.getName()), e); return builder.build().createInjector();
@Override public LifecycleInjector build() { return delegate.build(); }
/** * Starts the container and hence the embedded jetty server. * * @throws Exception if there is an issue while starting the server */ @PostConstruct public void init() throws Exception { server = new Server(listenPort); Injector injector = LifecycleInjector .builder() .usingBasePackages("com.netflix.explorers") .withModules(new AdminResourcesModule(healthCheckInvocationStrategyProvider)).createInjector(); try { injector.getInstance(LifecycleManager.class).start(); AdminResourcesFilter adminResourcesFilter = injector.getInstance(AdminResourcesFilter.class); adminResourcesFilter.setPackages(coreJerseyPackages); ServletContextHandler handler = new ServletContextHandler(); handler.setContextPath("/"); handler.setSessionHandler(new SessionHandler()); handler.addFilter(LoggingFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); handler.addFilter(RedirectFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); handler.addFilter(new FilterHolder(adminResourcesFilter), "/*", EnumSet.allOf(DispatcherType.class)); handler.addServlet(new ServletHolder(adminResourcesFilter), "/*"); server.setHandler(handler); server.start(); } catch (Exception e) { logger.error("Exception in building AdminResourcesContainer ", e); } }
@Override public LifecycleInjectorBuilder withBootstrapModule(BootstrapModule module) { this.delegate = delegate.withAdditionalBootstrapModules(module); return this; }
@Override public void configure(LifecycleInjectorBuilder builder) { builder.withMode(LifecycleInjectorMode.SIMULATED_CHILD_INJECTORS); builder.withAdditionalModules(new AbstractModule() { @Override protected void configure() { bindHealthCheck(bind(HealthCheckHandler.class)); bindHealthCheckInvocationStrategy(bind(HealthCheckInvocationStrategy.class)); } }); }
private void bindDashboard(LifecycleInjectorBuilder builder) { builder.withAdditionalModuleClasses(KaryonWebAdminModule.class); builder.withAdditionalModuleClasses(KaryonServoModule.class); builder.withAdditionalModules(new AbstractModule() { @Override protected void configure() { bind(HealthCheckHandler.class).to(AlwaysHealthyHealthCheck.class).asEagerSingleton(); bind(HealthCheckInvocationStrategy.class).to(SyncHealthCheckInvocationStrategy.class).asEagerSingleton(); } }); }
.asEagerSingleton(); builder.withAdditionalBootstrapModules(forAnnotation(annot)); added = true; LOG.info("Adding Module {}", bootstrap.bootstrap()); builder.withAdditionalModuleClasses(bootstrap.module()); builder.withAdditionalBootstrapModules(forAnnotation(annot));
public Builder(final String name, final Logger logger) { this.lifecycleInjectorBuilder = LifecycleInjector.builder() .ignoringAllAutoBindClasses() .withBootstrapModule(bootstrapBinder -> { bootstrapBinder.disableAutoBinding(); bootstrapBinder.requireExactBindingAnnotations(); }); this.configModuleBuilder = new AutoBindConfigModule.Builder(name); this.serviceGraphModuleBuilder = new AutoBindServiceGraphModule.Builder(name, serviceGraph); setName(name); setLogger(logger); setServiceConfig(ConfigFactory.empty()); }
@Override public LifecycleInjectorBuilder usingBasePackages( Collection<String> basePackages) { this.delegate = delegate.usingBasePackages(basePackages); return this; }