Merge branch '1.1.x'
This commit is contained in:
commit
2f4b89d19b
|
@ -26,10 +26,13 @@ import org.springframework.boot.context.event.ApplicationStartedEvent;
|
||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
import org.springframework.core.Ordered;
|
import org.springframework.core.Ordered;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
import org.springframework.util.SystemPropertyUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An {@link org.springframework.context.ApplicationListener} that saves application PID
|
* An {@link org.springframework.context.ApplicationListener} that saves application PID
|
||||||
* into file. This application listener will be triggered exactly once per JVM.
|
* into file. This application listener will be triggered exactly once per JVM, and the file
|
||||||
|
* name can be overridden at runtime with a System property or environment variable named
|
||||||
|
* "PIDFILE" (or "pidfile").
|
||||||
*
|
*
|
||||||
* @author Jakub Kubrynski
|
* @author Jakub Kubrynski
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
|
@ -62,8 +65,7 @@ public class ApplicationPidListener implements
|
||||||
* @param filename the name of file containing pid
|
* @param filename the name of file containing pid
|
||||||
*/
|
*/
|
||||||
public ApplicationPidListener(String filename) {
|
public ApplicationPidListener(String filename) {
|
||||||
Assert.notNull(filename, "Filename must not be null");
|
this(new File(filename));
|
||||||
this.file = new File(filename);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,7 +74,10 @@ public class ApplicationPidListener implements
|
||||||
*/
|
*/
|
||||||
public ApplicationPidListener(File file) {
|
public ApplicationPidListener(File file) {
|
||||||
Assert.notNull(file, "File must not be null");
|
Assert.notNull(file, "File must not be null");
|
||||||
this.file = file;
|
String actual = SystemPropertyUtils.resolvePlaceholders("${PIDFILE}", true);
|
||||||
|
actual = !actual.contains("$") ? actual : SystemPropertyUtils.resolvePlaceholders("${pidfile}", true);
|
||||||
|
actual = !actual.contains("$") ? actual : file.getAbsolutePath();
|
||||||
|
this.file = new File(actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -33,12 +33,12 @@ import static org.hamcrest.Matchers.not;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests fpr {@link ApplicationPidListener}.
|
* Tests for {@link ApplicationPidListener}.
|
||||||
*
|
*
|
||||||
* @author Jakub Kubrynski
|
* @author Jakub Kubrynski
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
*/
|
*/
|
||||||
public class ApplicationPidListenerTest {
|
public class ApplicationPidListenerTests {
|
||||||
|
|
||||||
private static final ApplicationStartedEvent EVENT = new ApplicationStartedEvent(
|
private static final ApplicationStartedEvent EVENT = new ApplicationStartedEvent(
|
||||||
new SpringApplication(), new String[] {});
|
new SpringApplication(), new String[] {});
|
||||||
|
@ -49,6 +49,7 @@ public class ApplicationPidListenerTest {
|
||||||
@Before
|
@Before
|
||||||
@After
|
@After
|
||||||
public void resetListener() {
|
public void resetListener() {
|
||||||
|
System.clearProperty("PIDFILE");
|
||||||
ApplicationPidListener.reset();
|
ApplicationPidListener.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,4 +61,13 @@ public class ApplicationPidListenerTest {
|
||||||
assertThat(FileCopyUtils.copyToString(new FileReader(file)), not(isEmptyString()));
|
assertThat(FileCopyUtils.copyToString(new FileReader(file)), not(isEmptyString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void overridePidFile() throws Exception {
|
||||||
|
File file = this.temporaryFolder.newFile();
|
||||||
|
System.setProperty("PIDFILE", this.temporaryFolder.newFile().getAbsolutePath());
|
||||||
|
ApplicationPidListener listener = new ApplicationPidListener(file);
|
||||||
|
listener.onApplicationEvent(EVENT);
|
||||||
|
assertThat(FileCopyUtils.copyToString(new FileReader(System.getProperty("PIDFILE"))), not(isEmptyString()));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -34,7 +34,7 @@ public class ApplicationStartedEvent extends SpringApplicationEvent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param application the current application
|
* @param application the current application
|
||||||
* @param args the argumemts the application is running with
|
* @param args the arguments the application is running with
|
||||||
*/
|
*/
|
||||||
public ApplicationStartedEvent(SpringApplication application, String[] args) {
|
public ApplicationStartedEvent(SpringApplication application, String[] args) {
|
||||||
super(application, args);
|
super(application, args);
|
||||||
|
|
Loading…
Reference in New Issue