@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))); }
@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 testBackupRegistryInjection() throws Exception { final BackupRegistry backupRegistry = mock(BackupRegistry.class); when(backupRegistry.fetchRegistry()).thenReturn(APPLICATIONS); Injector injector = LifecycleInjector.builder() .withModules( new AbstractModule() { @Override protected void configure() { bind(EurekaInstanceConfig.class).to(LocalEurekaInstanceConfig.class); bind(EurekaClientConfig.class).to(BadServerEurekaClientConfig1.class); bind(BackupRegistry.class).toInstance(backupRegistry); bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey1DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON); } } ) .build().createInjector(); LifecycleManager lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); EurekaClient client = injector.getInstance(EurekaClient.class); verify(backupRegistry, atLeast(1)).fetchRegistry(); assertThat(countInstances(client.getApplications()), is(equalTo(1))); }
@Test public void testEurekaClientLifecycle() throws Exception { Injector injector = LifecycleInjector.builder() .withModules( new AbstractModule() { @Override protected void configure() { bind(EurekaInstanceConfig.class).to(LocalEurekaInstanceConfig.class); bind(EurekaClientConfig.class).to(LocalEurekaClientConfig.class); bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey1DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON); } } ) .build().createInjector(); LifecycleManager lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); EurekaClient client = injector.getInstance(EurekaClient.class); // Check registration verify(requestHandler, timeout(TIMEOUT_MS).atLeast(1)).register(any(InstanceInfo.class)); // Check registry fetch verify(requestHandler, timeout(TIMEOUT_MS).times(1)).getApplications(); verify(requestHandler, timeout(TIMEOUT_MS).atLeast(1)).getDelta(); assertThat(countInstances(client.getApplications()), is(equalTo(1))); // Shutdown container, and check that unregister happens lifecycleManager.close(); verify(requestHandler, times(1)).cancel(MY_APPLICATION_NAME, MY_INSTANCE_ID); }
@BeforeSuite public void setupEnv() { Properties props = getProps(); try { ConfigurationManager.loadProperties(props); LifecycleInjectorBuilder builder = LifecycleInjector.builder(); builder.withModules( new EurekaModule(), new EVCacheModule(), new ConnectionModule(), new SpectatorModule() ); injector = builder.build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); injector.getInstance(ApplicationInfoManager.class); final EVCacheModule lib = injector.getInstance(EVCacheModule.class); manager = injector.getInstance(EVCacheClientPoolManager.class); } catch (Throwable e) { e.printStackTrace(); log.error(e.getMessage(), e); } }
/** * Create the main injector * * @return injector */ public Injector createInjector() { return createInjector(Lists.<Module>newArrayList()); }
/** * Create the main injector * * @param modules any additional modules * @return injector */ public Injector createInjector(Module... modules) { return createInjector(Arrays.asList(modules)); }
@Override @Deprecated public Injector createInjector() { return build().createInjector(); }
private Injector buildServiceInjector(final LifecycleInjectorBuilder lifecycleInjectorBuilder) { // 1. Startup the Governator LifecycleManager final LifecycleInjector lifecycleInjector = lifecycleInjectorBuilder.build(); final LifecycleManager lifecycleManager = lifecycleInjector.getLifecycleManager(); try { lifecycleManager.start(); } catch (Exception e) { getLogger().error("Error during LifecycleManager start", e); throw new RuntimeException(e); } // 2. Ensure that we shut everything down properly Runtime.getRuntime().addShutdownHook(new Thread(() -> { getLogger().info("Shutting down {} application.", getName()); lifecycleManager.close(); })); // 3. Grab the Guice injector from which we can get service references return lifecycleInjector.createInjector(); } }
@Override protected Injector getInjector() { List<Module> moduleList = Lists.newArrayList(); moduleList.add(new JaxServletModule()); moduleList.add(new RaigadGuiceModule()); Injector injector; try { injector = LifecycleInjector.builder().withModules(moduleList).build().createInjector(); startJobs(injector); LifecycleManager manager = injector.getInstance(LifecycleManager.class); manager.start(); } catch (Exception e) { logger.error(e.getMessage(),e); throw new RuntimeException(e.getMessage(), e); } return injector; }
/** 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(); }
public void start() { try { logger.info("Starting apollo.."); injector = LifecycleInjector.builder().withModules( new ApolloModule(configurationProvider.get()), new ApolloMyBatisModule(configurationProvider.get().getDatabase()) ).build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); logger.info("Apollo started"); } catch (Exception e) { throw new RuntimeException(e); } }
@Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { if(annotations.size() == 0) { return false; } LifecycleInjector lifecycleInjector = LifecycleInjector .builder() .withModules(new TorchCompilerModule(this, roundEnv)) .build(); try { lifecycleInjector.getLifecycleManager().start(); } catch (Exception e) { throw new RuntimeException(e); } Injector injector = lifecycleInjector.createInjector(); TorchAnnotationProcessor processor = injector.getInstance(TorchAnnotationProcessor.class); boolean success = processor.process(annotations); lifecycleInjector.getLifecycleManager().close(); return success; }
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(bootstrapModules); builder.withModules(PostInjectorModule.forLifecycleInjectorBuilder(builder)); injector = builder.build().createInjector(); startLifecycleManager();
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; }
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()); }
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); } }
@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(); }