Allow PORTFILE to always override the file to use

Previously, the `PORTFILE` system property was not checked if the
`EmbeddedServerPortFileWriter` was created using the default constructor.

This had the effect to prevent overriding of the port file when this
listener is created without any file or via `META-INF/spring.factories`.

Closes gh-4254
This commit is contained in:
Stephane Nicoll 2015-10-21 13:58:48 +02:00
parent cfbac20807
commit 2e2ebeb9fa
2 changed files with 13 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2010-2014 the original author or authors.
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -57,7 +57,7 @@ public class EmbeddedServerPortFileWriter
* 'application.port'.
*/
public EmbeddedServerPortFileWriter() {
this.file = new File(DEFAULT_FILE_NAME);
this(new File(DEFAULT_FILE_NAME));
}
/**

View File

@ -1,5 +1,5 @@
/*
* Copyright 2010-2014 the original author or authors.
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -66,7 +66,16 @@ public class EmbeddedServerPortFileWriterTests {
}
@Test
public void overridePortFile() throws Exception {
public void overridePortFileWithDefault() throws Exception {
System.setProperty("PORTFILE", this.temporaryFolder.newFile().getAbsolutePath());
EmbeddedServerPortFileWriter listener = new EmbeddedServerPortFileWriter();
listener.onApplicationEvent(mockEvent("", 8080));
assertThat(FileCopyUtils.copyToString(
new FileReader(System.getProperty("PORTFILE"))), equalTo("8080"));
}
@Test
public void overridePortFileWithExplicitFile() throws Exception {
File file = this.temporaryFolder.newFile();
System.setProperty("PORTFILE", this.temporaryFolder.newFile().getAbsolutePath());
EmbeddedServerPortFileWriter listener = new EmbeddedServerPortFileWriter(file);