From e939e09e95f51cffa16354721ccae6765e11cb25 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 7 Mar 2018 12:32:34 -0500 Subject: [PATCH] GH-1286 Reworked 'bindings' endpoint (#1288) * GH-1286 Reworked 'bindings' endpoint * polishing --- pom.xml | 9 ++ .../BindingsEndpointAutoConfiguration.java | 23 +--- .../stream/endpoint/BindingsEndpoint.java | 110 ++++++------------ 3 files changed, 46 insertions(+), 96 deletions(-) diff --git a/pom.xml b/pom.xml index 37750ddd9..e8e131c9d 100644 --- a/pom.xml +++ b/pom.xml @@ -148,6 +148,15 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + -parameters + + org.apache.maven.plugins maven-checkstyle-plugin diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingsEndpointAutoConfiguration.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingsEndpointAutoConfiguration.java index 904d98988..4f16a1cdb 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingsEndpointAutoConfiguration.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingsEndpointAutoConfiguration.java @@ -39,29 +39,8 @@ import org.springframework.context.annotation.Configuration; @AutoConfigureAfter(EndpointAutoConfiguration.class) public class BindingsEndpointAutoConfiguration { - @Bean + @Bean public BindingsEndpoint bindingsEndpoint(List inputBindings) { return new BindingsEndpoint(inputBindings); } - - @Bean - public BindingsEndpoint.StopEndpoint stopEndpoint(BindingsEndpoint bindingEndpoint) { - return bindingEndpoint.getStopEndpoint(); - } - - @Bean - public BindingsEndpoint.PauseEndpoint pauseEndpoint(BindingsEndpoint bindingEndpoint) { - return bindingEndpoint.getPauseEndpoint(); - } - - @Bean - public BindingsEndpoint.StartEndpoint startEndpoint(BindingsEndpoint bindingEndpoint) { - return bindingEndpoint.getStartEndpoint(); - } - - @Bean - public BindingsEndpoint.ResumeEndpoint resumeEndpoint(BindingsEndpoint bindingEndpoint) { - return bindingEndpoint.getResumeEndpoint(); - } - } diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/BindingsEndpoint.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/BindingsEndpoint.java index 6f661573d..81a80f850 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/BindingsEndpoint.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/BindingsEndpoint.java @@ -25,6 +25,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.DirectFieldAccessor; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; +import org.springframework.boot.actuate.endpoint.annotation.Selector; import org.springframework.boot.actuate.endpoint.annotation.WriteOperation; import org.springframework.cloud.stream.binder.Binding; import org.springframework.cloud.stream.binding.InputBindingLifecycle; @@ -39,19 +40,9 @@ import org.springframework.util.Assert; * @since 2.0 * */ -@Endpoint(id = BindingsEndpoint.BASE_ENPOINT_ID) +@Endpoint(id = "bindings") public class BindingsEndpoint { - static final String BASE_ENPOINT_ID = "bindings"; - - static final String START_ENPOINT_ID = BASE_ENPOINT_ID + "/start/{name}"; - - static final String STOP_ENPOINT_ID = BASE_ENPOINT_ID + "/stop/{name}"; - - static final String PAUSE_ENPOINT_ID = BASE_ENPOINT_ID + "/pause/{name}"; - - static final String RESUME_ENPOINT_ID = BASE_ENPOINT_ID + "/resume/{name}"; - private final List inputBindingLifecycles; private final ObjectMapper objectMapper; @@ -62,25 +53,38 @@ public class BindingsEndpoint { this.objectMapper = new ObjectMapper(); } + @WriteOperation + public void changeState(@Selector String name, State state) { + Binding binding = BindingsEndpoint.this.locateBinding(name); + if (binding != null) { + switch (state) { + case STARTED: + binding.start(); + break; + case STOPPED: + binding.stop(); + break; + case PAUSED: + binding.pause(); + break; + case RESUMED: + binding.resume(); + break; + default: + break; + } + } + } + @ReadOperation - public List bindings() { - return this.objectMapper.convertValue(this.gatherInputBindings(), List.class); + public List queryStates() { + return objectMapper.convertValue(gatherInputBindings(), List.class); } - public StopEndpoint getStopEndpoint() { - return new StopEndpoint(); - } - - public StartEndpoint getStartEndpoint() { - return new StartEndpoint(); - } - - public PauseEndpoint getPauseEndpoint() { - return new PauseEndpoint(); - } - - public ResumeEndpoint getResumeEndpoint() { - return new ResumeEndpoint(); + @ReadOperation + public Binding queryState(@Selector String name) { + Assert.notNull(name, "'name' must not be null"); + return this.locateBinding(name); } @SuppressWarnings("unchecked") @@ -101,52 +105,10 @@ public class BindingsEndpoint { .orElse(null); } - @Endpoint(id = BindingsEndpoint.STOP_ENPOINT_ID) - public class StopEndpoint { - @WriteOperation - public boolean stop(String name) { - Binding binding = BindingsEndpoint.this.locateBinding(name); - if (binding != null) { - binding.stop(); - } - return binding != null; - } + private enum State { + STARTED, + STOPPED, + PAUSED, + RESUMED; } - - @Endpoint(id = BindingsEndpoint.PAUSE_ENPOINT_ID) - public class PauseEndpoint { - @WriteOperation - public boolean pause(String name) { - Binding binding = BindingsEndpoint.this.locateBinding(name); - if (binding != null) { - binding.pause(); - } - return binding != null; - } - } - - @Endpoint(id = BindingsEndpoint.START_ENPOINT_ID) - public class StartEndpoint { - @WriteOperation - public boolean start(String name) { - Binding binding = BindingsEndpoint.this.locateBinding(name); - if (binding != null) { - binding.start(); - } - return binding != null; - } - } - - @Endpoint(id = BindingsEndpoint.RESUME_ENPOINT_ID) - public class ResumeEndpoint { - @WriteOperation - public boolean resume(String name) { - Binding binding = BindingsEndpoint.this.locateBinding(name); - if (binding != null) { - binding.resume(); - } - return binding != null; - } - } - }