Merge pull request #10588 from Eddú Meléndez

* gh-10588:
  Polish "Provide informative reason when rejecting request with invalid level"
  Provide informative reason when rejecting request with invalid level
pull/10706/head
Andy Wilkinson 7 years ago
commit 2eb0c3ba1e

@ -22,10 +22,12 @@ import org.springframework.boot.actuate.endpoint.LoggersEndpoint;
import org.springframework.boot.actuate.endpoint.LoggersEndpoint.LoggerLevels;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.logging.LogLevel;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
/**
* Adapter to expose {@link LoggersEndpoint} as an {@link MvcEndpoint}.
@ -68,19 +70,32 @@ public class LoggersMvcEndpoint extends EndpointMvcAdapter {
// disabled
return getDisabledResponse();
}
LogLevel logLevel = getLogLevel(configuration);
this.delegate.setLogLevel(name, logLevel);
return ResponseEntity.ok().build();
}
private LogLevel getLogLevel(Map<String, String> configuration) {
String level = configuration.get("configuredLevel");
try {
LogLevel logLevel = getLogLevel(configuration);
this.delegate.setLogLevel(name, logLevel);
return ResponseEntity.ok().build();
return (level == null ? null : LogLevel.valueOf(level.toUpperCase()));
}
catch (IllegalArgumentException ex) {
return ResponseEntity.badRequest().build();
throw new InvalidLogLevelException(level);
}
}
private LogLevel getLogLevel(Map<String, String> configuration) {
String level = configuration.get("configuredLevel");
return (level == null ? null : LogLevel.valueOf(level.toUpperCase()));
/**
* Exception thrown when the specified log level cannot be found.
*/
@SuppressWarnings("serial")
@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "No such log level")
public static class InvalidLogLevelException extends RuntimeException {
public InvalidLogLevelException(String level) {
super("Log level '" + level + "' is invalid");
}
}
}

@ -49,6 +49,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@ -174,7 +175,8 @@ public class LoggersMvcEndpointTests {
public void setLoggerWithWrongLogLevel() throws Exception {
this.mvc.perform(post("/loggers/ROOT").contentType(MediaType.APPLICATION_JSON)
.content("{\"configuredLevel\":\"other\"}"))
.andExpect(status().is4xxClientError());
.andExpect(status().is4xxClientError())
.andExpect(status().reason(is("No such log level")));
verifyZeroInteractions(this.loggingSystem);
}

Loading…
Cancel
Save