@Override public void configure(BootstrapBinder binder) { binder.bind(String.class).annotatedWith(EurekaNamespace.class).toInstance("testnamespace."); } })
@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))); }
@Override public void configure(BootstrapBinder bootstrapBinder) { bootstrapBinder.inMode(LifecycleInjectorMode.SIMULATED_CHILD_INJECTORS); bootstrapBinder.include(new AbstractModule() { @Override protected void configure() { bindHealthCheck(bind(HealthCheckHandler.class)); bindHealthCheckInvocationStrategy(bind(HealthCheckInvocationStrategy.class)); } }); }
@Override public void configure(BootstrapBinder binder) { for (Module m : enableExtensions()) { binder.include(m); } } };
@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)); } }); }
@Override public LifecycleInjectorBuilder withModules( Iterable<? extends Module> modules) { this.delegate = delegate.withAdditionalModules(modules); return this; }
@Override protected Injector newInjector(BootstrapModule... applicableBootstrapModules) { return LifecycleInjector.bootstrap(mainClass, applicableBootstrapModules); } }
private void bindAnnotations(Annotation[] annotations) { for ( Annotation annotation : annotations ) { AutoBindProvider autoBindProvider = getAutoBindProvider(annotation); if ( autoBindProvider != null ) { //noinspection unchecked autoBindProvider.configure(binder(), annotation); } } }
@Override public LifecycleInjectorBuilder withModuleTransformer( ModuleTransformer... transformers) { this.delegate = delegate.withModuleTransformer(transformers); return this; }
@Override public LifecycleInjectorBuilder withModuleClass(Class<? extends Module> module) { if (module != null) { this.modules.include(module); } return this; }
@Override public LifecycleInjectorBuilder withPostInjectorActions( Collection<? extends PostInjectorAction> actions) { this.delegate = delegate.withPostInjectorActions(actions); return this; }
@Override public LifecycleInjectorBuilder withoutModuleClasses(Iterable<Class<? extends Module>> modules) { this.modules.exclude(modules); return this; }
List<Module> build(Injector injector) throws Exception { for (ModuleProvider provider : providers) { provider.getInstance(injector); } return resolvedModules; } }
@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))); }
@Override public LifecycleInjectorBuilder withModuleClasses(Iterable<Class<? extends Module>> modules) { if (modules != null) { this.modules.include(modules); } return this; }
@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); } }
@Override public LifecycleInjectorBuilder withAdditionalModuleClasses(Iterable<Class<? extends Module>> modules) { this.modules.include(modules); return this; }
@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); }
public ModuleListBuilder includeModules(Iterable<? extends Module> modules) { for (Module module : modules) { include (module); } return this; }