Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
4d28e1b6
Commit
4d28e1b6
authored
Jan 07, 2014
by
Dave Syer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Migrate VCAP initializer to a listener
parent
441572c6
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
33 deletions
+34
-33
VcapApplicationListener.java
...mework/boot/context/listener/VcapApplicationListener.java
+8
-8
spring.factories
spring-boot/src/main/resources/META-INF/spring.factories
+2
-2
SpringApplicationBuilderTests.java
...framework/boot/builder/SpringApplicationBuilderTests.java
+3
-3
VcapApplicationListenerTests.java
...k/boot/context/listener/VcapApplicationListenerTests.java
+21
-20
No files found.
spring-boot/src/main/java/org/springframework/boot/context/
initializer/VcapApplicationContextInitializ
er.java
→
spring-boot/src/main/java/org/springframework/boot/context/
listener/VcapApplicationListen
er.java
View file @
4d28e1b6
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
context
.
initializ
er
;
package
org
.
springframework
.
boot
.
context
.
listen
er
;
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
VcapApplication
ContextInitializ
er
implements
Application
ContextInitializer
<
ConfigurableApplicationContex
t
>,
Ordered
{
public
class
VcapApplication
Listen
er
implements
Application
Listener
<
SpringApplicationEnvironmentAvailableEven
t
>,
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
applicationContex
t
)
{
public
void
onApplicationEvent
(
SpringApplicationEnvironmentAvailableEvent
even
t
)
{
ConfigurableEnvironment
environment
=
applicationContex
t
.
getEnvironment
();
ConfigurableEnvironment
environment
=
even
t
.
getEnvironment
();
if
(!
environment
.
containsProperty
(
VCAP_APPLICATION
)
&&
!
environment
.
containsProperty
(
VCAP_SERVICES
))
{
return
;
...
...
spring-boot/src/main/resources/META-INF/spring.factories
View file @
4d28e1b6
...
...
@@ -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
spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java
View file @
4d28e1b6
...
...
@@ -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
...
...
spring-boot/src/test/java/org/springframework/boot/context/
initializer/VcapApplicationContextInitializ
erTests.java
→
spring-boot/src/test/java/org/springframework/boot/context/
listener/VcapApplicationListen
erTests.java
View file @
4d28e1b6
...
...
@@ -14,9 +14,11 @@
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
context
.
initializ
er
;
package
org
.
springframework
.
boot
.
context
.
listen
er
;
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 VcapApplication
ContextInitializ
er}.
* Tests for {@link VcapApplication
Listen
er}.
*
* @author Dave Syer
*/
public
class
VcapApplication
ContextInitializ
erTests
{
public
class
VcapApplication
Listen
erTests
{
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
(
contex
t
);
assertEquals
(
"bb7935245adf3e650dfb7c58a06e9ece"
,
context
.
getEnvironment
()
this
.
initializer
.
onApplicationEvent
(
this
.
even
t
);
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
(
contex
t
);
assertEquals
(
null
,
context
.
getEnvironment
().
getProperty
(
"vcap"
));
this
.
initializer
.
onApplicationEvent
(
this
.
even
t
);
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
(
contex
t
);
this
.
initializer
.
onApplicationEvent
(
this
.
even
t
);
assertEquals
(
"mysql"
,
context
.
getEnvironment
().
getProperty
(
"vcap.services.mysql.name"
));
this
.
context
.
getEnvironment
().
getProperty
(
"vcap.services.mysql.name"
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment