Reuse pause and resume endpoints to the can be disabled.
fixes gh-86
This commit is contained in:
@@ -72,13 +72,15 @@ public class LifecycleMvcEndpointAutoConfiguration {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MvcEndpoint pauseMvcEndpoint(RestartMvcEndpoint restartEndpoint) {
|
||||
return restartEndpoint.getPauseEndpoint();
|
||||
@ConditionalOnBean(RestartEndpoint.PauseEndpoint.class)
|
||||
public MvcEndpoint pauseMvcEndpoint(RestartEndpoint.PauseEndpoint pauseEndpoint) {
|
||||
return new GenericPostableMvcEndpoint(pauseEndpoint);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MvcEndpoint resumeMvcEndpoint(RestartMvcEndpoint restartEndpoint) {
|
||||
return restartEndpoint.getResumeEndpoint();
|
||||
@ConditionalOnBean(RestartEndpoint.ResumeEndpoint.class)
|
||||
public MvcEndpoint resumeMvcEndpoint(RestartEndpoint.ResumeEndpoint resumeEndpoint) {
|
||||
return new GenericPostableMvcEndpoint(resumeEndpoint);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -94,13 +94,13 @@ public class RefreshEndpointAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("endpoints.pause")
|
||||
public Endpoint<Boolean> pauseEndpoint(RestartEndpoint restartEndpoint) {
|
||||
public RestartEndpoint.PauseEndpoint pauseEndpoint(RestartEndpoint restartEndpoint) {
|
||||
return restartEndpoint.getPauseEndpoint();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("endpoints.resume")
|
||||
public Endpoint<Boolean> resumeEndpoint(RestartEndpoint restartEndpoint) {
|
||||
public RestartEndpoint.ResumeEndpoint resumeEndpoint(RestartEndpoint restartEndpoint) {
|
||||
return restartEndpoint.getResumeEndpoint();
|
||||
}
|
||||
|
||||
|
||||
@@ -107,15 +107,15 @@ public class RestartEndpoint extends AbstractEndpoint<Boolean> implements
|
||||
}
|
||||
}
|
||||
|
||||
public Endpoint<Boolean> getPauseEndpoint() {
|
||||
public PauseEndpoint getPauseEndpoint() {
|
||||
return new PauseEndpoint();
|
||||
}
|
||||
|
||||
public Endpoint<Boolean> getResumeEndpoint() {
|
||||
public ResumeEndpoint getResumeEndpoint() {
|
||||
return new ResumeEndpoint();
|
||||
}
|
||||
|
||||
private class PauseEndpoint extends AbstractEndpoint<Boolean> {
|
||||
public class PauseEndpoint extends AbstractEndpoint<Boolean> {
|
||||
|
||||
public PauseEndpoint() {
|
||||
super("pause", true, true);
|
||||
@@ -131,7 +131,7 @@ public class RestartEndpoint extends AbstractEndpoint<Boolean> implements
|
||||
}
|
||||
}
|
||||
|
||||
private class ResumeEndpoint extends AbstractEndpoint<Boolean> {
|
||||
public class ResumeEndpoint extends AbstractEndpoint<Boolean> {
|
||||
|
||||
public ResumeEndpoint() {
|
||||
super("resume", true, true);
|
||||
|
||||
@@ -16,13 +16,10 @@
|
||||
package org.springframework.cloud.context.restart;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter;
|
||||
import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.cloud.endpoint.GenericPostableMvcEndpoint;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
@@ -45,7 +42,7 @@ public class RestartMvcEndpoint extends EndpointMvcAdapter {
|
||||
@Override
|
||||
public Object invoke() {
|
||||
if (!getDelegate().isEnabled()) {
|
||||
return new ResponseEntity<Map<String, String>>(Collections.singletonMap(
|
||||
return new ResponseEntity<>(Collections.singletonMap(
|
||||
"message", "This endpoint is disabled"), HttpStatus.NOT_FOUND);
|
||||
}
|
||||
Thread thread = new Thread(new Runnable() {
|
||||
@@ -59,14 +56,4 @@ public class RestartMvcEndpoint extends EndpointMvcAdapter {
|
||||
return Collections.singletonMap("message", "Restarting");
|
||||
}
|
||||
|
||||
public MvcEndpoint getPauseEndpoint() {
|
||||
return new GenericPostableMvcEndpoint(
|
||||
((RestartEndpoint) getDelegate()).getPauseEndpoint());
|
||||
}
|
||||
|
||||
public MvcEndpoint getResumeEndpoint() {
|
||||
return new GenericPostableMvcEndpoint(
|
||||
((RestartEndpoint) getDelegate()).getResumeEndpoint());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package org.springframework.cloud.endpoint;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.actuate.endpoint.Endpoint;
|
||||
import org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter;
|
||||
@@ -44,7 +43,7 @@ public class GenericPostableMvcEndpoint extends EndpointMvcAdapter {
|
||||
@Override
|
||||
public Object invoke() {
|
||||
if (!getDelegate().isEnabled()) {
|
||||
return new ResponseEntity<Map<String, String>>(Collections.singletonMap(
|
||||
return new ResponseEntity<>(Collections.singletonMap(
|
||||
"message", "This endpoint is disabled"), HttpStatus.NOT_FOUND);
|
||||
}
|
||||
return super.invoke();
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.springframework.cloud.autoconfigure;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.instanceOf;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
/**
|
||||
* @author Spencer Gibb
|
||||
*/
|
||||
public class LifecycleMvcAutoConfigurationTests {
|
||||
|
||||
@Test
|
||||
public void pauseMvcEndpointDisabled() {
|
||||
endpointDisabled("endpoints.pause.enabled", "pauseMvcEndpoint");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resumeMvcEndpointDisabled() {
|
||||
endpointDisabled("endpoints.resume.enabled", "resumeMvcEndpoint");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void restartMvcEndpointDisabled() {
|
||||
endpointDisabled("endpoints.restart.enabled", "restartMvcEndpoint");
|
||||
}
|
||||
|
||||
private void endpointDisabled(String enabledProp, String beanName) {
|
||||
try (ConfigurableApplicationContext context = getApplicationContext(Config.class, "server.port=0", enabledProp +"=false")) {
|
||||
EndpointMvcAdapter endpoint = context.getBean(beanName, EndpointMvcAdapter.class);
|
||||
Object result = endpoint.invoke();
|
||||
assertThat("result is wrong type", result, is(instanceOf(ResponseEntity.class)));
|
||||
ResponseEntity response = (ResponseEntity) result;
|
||||
assertThat("response code was wrong", response.getStatusCode(), equalTo(HttpStatus.NOT_FOUND));
|
||||
}
|
||||
}
|
||||
|
||||
private static ConfigurableApplicationContext getApplicationContext(Class<?> configuration, String... properties) {
|
||||
return new SpringApplicationBuilder(configuration).properties(properties).run();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableAutoConfiguration
|
||||
static class Config {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user