1fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkitpackage com.google.inject; 2fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit 3eab76471fbc2118a3c07d103d4b5548e153ed9e7limpbizkitimport static com.google.inject.Asserts.assertContains; 4b7a02b02d81c830d148355c90bc309bcd66fb592sberlin 5eab76471fbc2118a3c07d103d4b5548e153ed9e7limpbizkitimport com.google.inject.name.Names; 6b7a02b02d81c830d148355c90bc309bcd66fb592sberlin 7477f9f9ce3e1077866b579e99cd33ab824f1ee69limpbizkitimport junit.framework.TestCase; 82b93168004c7ad3ae4393933de2ee19e81787656limpbizkit 9b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport java.util.logging.Logger; 10b7a02b02d81c830d148355c90bc309bcd66fb592sberlin 11fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit/** 12fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit * Test built-in injection of loggers. 13fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit * 14fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit * @author jessewilson 15fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit */ 16fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkitpublic class LoggerInjectionTest extends TestCase { 17fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit 18fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit @Inject Logger logger; 19fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit 20fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit public void testLoggerWithMember() { 21fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit Injector injector = Guice.createInjector(); 22fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit injector.injectMembers(this); 23fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit assertEquals("com.google.inject.LoggerInjectionTest", logger.getName()); 24fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit } 25fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit 2682cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin public void testLoggerInConstructor() { 2782cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin Injector injector = Guice.createInjector(); 2882cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin Foo foo = injector.getInstance(Foo.class); 2982cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin assertEquals("com.google.inject.LoggerInjectionTest$Foo", foo.logger.getName()); 3082cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin } 3182cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin 3282cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin private static class Foo { 3382cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin Logger logger; 3482cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin @SuppressWarnings("unused") 3582cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin @Inject Foo(Logger logger) { 3682cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin this.logger = logger; 3782cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin } 3882cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin } 3982cbc6d68319d3a5b032b44b97ad6b6c0f9e3831sberlin 40fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit public void testLoggerWithoutMember() { 41fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit Injector injector = Guice.createInjector(); 422b93168004c7ad3ae4393933de2ee19e81787656limpbizkit assertNull(injector.getInstance(Logger.class).getName()); 432b93168004c7ad3ae4393933de2ee19e81787656limpbizkit assertNull(injector.getProvider(Logger.class).get().getName()); 442b93168004c7ad3ae4393933de2ee19e81787656limpbizkit assertNull(injector.getBinding(Logger.class).getProvider().get().getName()); 452b93168004c7ad3ae4393933de2ee19e81787656limpbizkit assertEquals("Provider<Logger>", injector.getProvider(Logger.class).toString()); 46fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit } 47150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit 48150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit public void testCanBindAnnotatedLogger() { 49150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit Injector injector = Guice.createInjector(new AbstractModule() { 50150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit protected void configure() { 51150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit bind(Logger.class) 52150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit .annotatedWith(Names.named("anonymous")) 53150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit .toInstance(Logger.getAnonymousLogger()); 54150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit } 55150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit }); 56150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit 57150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit assertNull(injector.getInstance(Key.get(Logger.class, Names.named("anonymous"))).getName()); 58150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit } 59150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit 60150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit public void testCannotBindLogger() { 61150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit try { 62150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit Guice.createInjector(new AbstractModule() { 63150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit protected void configure() { 64150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit bind(Logger.class).toInstance(Logger.getAnonymousLogger()); 65150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit } 66150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit }); 67150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit fail(); 68150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit } catch (CreationException expected) { 69eab76471fbc2118a3c07d103d4b5548e153ed9e7limpbizkit assertContains(expected.getMessage(), 70eab76471fbc2118a3c07d103d4b5548e153ed9e7limpbizkit "A binding to java.util.logging.Logger was already configured"); 71150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit } 72150d677aafdbdb131abca815ffe1e2d9a6029b6dlimpbizkit } 73fcf2b8ca9ca92c65e52a91fa0b682061428dab63limpbizkit} 74