diff --git a/spring-boot/src/main/java/org/springframework/boot/context/initializer/VcapApplicationContextInitializer.java b/spring-boot/src/main/java/org/springframework/boot/context/listener/VcapApplicationListener.java similarity index 93% rename from spring-boot/src/main/java/org/springframework/boot/context/initializer/VcapApplicationContextInitializer.java rename to spring-boot/src/main/java/org/springframework/boot/context/listener/VcapApplicationListener.java index 181216c072..8d972362c9 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/initializer/VcapApplicationContextInitializer.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/listener/VcapApplicationListener.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.context.initializer; +package org.springframework.boot.context.listener; import java.util.Collection; import java.util.Collections; @@ -26,10 +26,11 @@ import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.boot.SpringApplicationEnvironmentAvailableEvent; import org.springframework.boot.config.JsonParser; import org.springframework.boot.config.JsonParserFactory; import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.ApplicationListener; import org.springframework.core.Ordered; import org.springframework.core.env.CommandLinePropertySource; import org.springframework.core.env.ConfigurableEnvironment; @@ -87,11 +88,10 @@ import org.springframework.util.StringUtils; * * @author Dave Syer */ -public class VcapApplicationContextInitializer implements - ApplicationContextInitializer, Ordered { +public class VcapApplicationListener implements + ApplicationListener, Ordered { - private static final Log logger = LogFactory - .getLog(VcapApplicationContextInitializer.class); + private static final Log logger = LogFactory.getLog(VcapApplicationListener.class); private static final String VCAP_APPLICATION = "VCAP_APPLICATION"; @@ -113,9 +113,9 @@ public class VcapApplicationContextInitializer implements } @Override - public void initialize(ConfigurableApplicationContext applicationContext) { + public void onApplicationEvent(SpringApplicationEnvironmentAvailableEvent event) { - ConfigurableEnvironment environment = applicationContext.getEnvironment(); + ConfigurableEnvironment environment = event.getEnvironment(); if (!environment.containsProperty(VCAP_APPLICATION) && !environment.containsProperty(VCAP_SERVICES)) { return; diff --git a/spring-boot/src/main/resources/META-INF/spring.factories b/spring-boot/src/main/resources/META-INF/spring.factories index 6867d12f0b..991eae80d1 100644 --- a/spring-boot/src/main/resources/META-INF/spring.factories +++ b/spring-boot/src/main/resources/META-INF/spring.factories @@ -2,11 +2,11 @@ org.springframework.context.ApplicationContextInitializer=\ org.springframework.boot.context.initializer.FileEncodingApplicationContextInitializer,\ org.springframework.boot.context.initializer.ContextIdApplicationContextInitializer,\ -org.springframework.boot.context.initializer.EnvironmentDelegateApplicationContextInitializer,\ -org.springframework.boot.context.initializer.VcapApplicationContextInitializer +org.springframework.boot.context.initializer.EnvironmentDelegateApplicationContextInitializer # Application Listeners org.springframework.context.ApplicationListener=\ +org.springframework.boot.context.listener.VcapApplicationListener,\ org.springframework.boot.context.listener.ConfigFileApplicationListener,\ org.springframework.boot.context.listener.LoggingApplicationListener,\ org.springframework.boot.liquibase.LiquibaseServiceLocatorInitializer diff --git a/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java b/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java index f12711d95b..91e1992a84 100644 --- a/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java @@ -176,7 +176,7 @@ public class SpringApplicationBuilderTests { SpringApplicationBuilder application = new SpringApplicationBuilder( ExampleConfig.class).web(false); this.context = application.run(); - assertEquals(4, application.application().getInitializers().size()); + assertEquals(3, application.application().getInitializers().size()); } @Test @@ -184,7 +184,7 @@ public class SpringApplicationBuilderTests { SpringApplicationBuilder application = new SpringApplicationBuilder( ExampleConfig.class).child(ChildConfig.class).web(false); this.context = application.run(); - assertEquals(5, application.application().getInitializers().size()); + assertEquals(4, application.application().getInitializers().size()); } @Test @@ -198,7 +198,7 @@ public class SpringApplicationBuilderTests { } }); this.context = application.run(); - assertEquals(5, application.application().getInitializers().size()); + assertEquals(4, application.application().getInitializers().size()); } @Configuration diff --git a/spring-boot/src/test/java/org/springframework/boot/context/initializer/VcapApplicationContextInitializerTests.java b/spring-boot/src/test/java/org/springframework/boot/context/listener/VcapApplicationListenerTests.java similarity index 70% rename from spring-boot/src/test/java/org/springframework/boot/context/initializer/VcapApplicationContextInitializerTests.java rename to spring-boot/src/test/java/org/springframework/boot/context/listener/VcapApplicationListenerTests.java index 33c0dcb454..77516ca400 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/initializer/VcapApplicationContextInitializerTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/listener/VcapApplicationListenerTests.java @@ -14,9 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.context.initializer; +package org.springframework.boot.context.listener; import org.junit.Test; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.SpringApplicationEnvironmentAvailableEvent; import org.springframework.boot.TestUtils; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -24,54 +26,53 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext import static org.junit.Assert.assertEquals; /** - * Tests for {@link VcapApplicationContextInitializer}. + * Tests for {@link VcapApplicationListener}. * * @author Dave Syer */ -public class VcapApplicationContextInitializerTests { +public class VcapApplicationListenerTests { - private VcapApplicationContextInitializer initializer = new VcapApplicationContextInitializer(); + private VcapApplicationListener initializer = new VcapApplicationListener(); + private ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(); + private SpringApplicationEnvironmentAvailableEvent event = new SpringApplicationEnvironmentAvailableEvent( + new SpringApplication(), this.context.getEnvironment(), new String[0]); @Test public void testApplicationProperties() { - ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(); TestUtils .addEnviroment( - context, + this.context, "VCAP_APPLICATION:{\"application_users\":[],\"instance_id\":\"bb7935245adf3e650dfb7c58a06e9ece\",\"instance_index\":0,\"version\":\"3464e092-1c13-462e-a47c-807c30318a50\",\"name\":\"foo\",\"uris\":[\"foo.cfapps.io\"],\"started_at\":\"2013-05-29 02:37:59 +0000\",\"started_at_timestamp\":1369795079,\"host\":\"0.0.0.0\",\"port\":61034,\"limits\":{\"mem\":128,\"disk\":1024,\"fds\":16384},\"version\":\"3464e092-1c13-462e-a47c-807c30318a50\",\"name\":\"dsyerenv\",\"uris\":[\"dsyerenv.cfapps.io\"],\"users\":[],\"start\":\"2013-05-29 02:37:59 +0000\",\"state_timestamp\":1369795079}"); - this.initializer.initialize(context); - assertEquals("bb7935245adf3e650dfb7c58a06e9ece", context.getEnvironment() + this.initializer.onApplicationEvent(this.event); + assertEquals("bb7935245adf3e650dfb7c58a06e9ece", this.context.getEnvironment() .getProperty("vcap.application.instance_id")); } @Test public void testUnparseableApplicationProperties() { - ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(); - TestUtils.addEnviroment(context, "VCAP_APPLICATION:"); - this.initializer.initialize(context); - assertEquals(null, context.getEnvironment().getProperty("vcap")); + TestUtils.addEnviroment(this.context, "VCAP_APPLICATION:"); + this.initializer.onApplicationEvent(this.event); + assertEquals(null, this.context.getEnvironment().getProperty("vcap")); } @Test public void testNullApplicationProperties() { - ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(); TestUtils .addEnviroment( - context, + this.context, "VCAP_APPLICATION:{\"application_users\":null,\"instance_id\":\"bb7935245adf3e650dfb7c58a06e9ece\",\"instance_index\":0,\"version\":\"3464e092-1c13-462e-a47c-807c30318a50\",\"name\":\"foo\",\"uris\":[\"foo.cfapps.io\"],\"started_at\":\"2013-05-29 02:37:59 +0000\",\"started_at_timestamp\":1369795079,\"host\":\"0.0.0.0\",\"port\":61034,\"limits\":{\"mem\":128,\"disk\":1024,\"fds\":16384},\"version\":\"3464e092-1c13-462e-a47c-807c30318a50\",\"name\":\"dsyerenv\",\"uris\":[\"dsyerenv.cfapps.io\"],\"users\":[],\"start\":\"2013-05-29 02:37:59 +0000\",\"state_timestamp\":1369795079}"); - this.initializer.initialize(context); - assertEquals(null, context.getEnvironment().getProperty("vcap")); + this.initializer.onApplicationEvent(this.event); + assertEquals(null, this.context.getEnvironment().getProperty("vcap")); } @Test public void testServiceProperties() { - ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(); TestUtils .addEnviroment( - context, + this.context, "VCAP_SERVICES:{\"rds-mysql-n/a\":[{\"name\":\"mysql\",\"label\":\"rds-mysql-n/a\",\"plan\":\"10mb\",\"credentials\":{\"name\":\"d04fb13d27d964c62b267bbba1cffb9da\",\"hostname\":\"mysql-service-public.clqg2e2w3ecf.us-east-1.rds.amazonaws.com\",\"host\":\"mysql-service-public.clqg2e2w3ecf.us-east-1.rds.amazonaws.com\",\"port\":3306,\"user\":\"urpRuqTf8Cpe6\",\"username\":\"urpRuqTf8Cpe6\",\"password\":\"pxLsGVpsC9A5S\"}}]}"); - this.initializer.initialize(context); + this.initializer.onApplicationEvent(this.event); assertEquals("mysql", - context.getEnvironment().getProperty("vcap.services.mysql.name")); + this.context.getEnvironment().getProperty("vcap.services.mysql.name")); } }