Skip to content

Commit

Permalink
feat: Allow override of the message property for a violation exception
Browse files Browse the repository at this point in the history
Fixes #103
  • Loading branch information
wimdeblauwe committed Sep 20, 2024
1 parent 3ad2534 commit 88ad86e
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@
import io.github.wimdeblauwe.errorhandlingspringbootstarter.mapper.ErrorCodeMapper;
import io.github.wimdeblauwe.errorhandlingspringbootstarter.mapper.ErrorMessageMapper;
import io.github.wimdeblauwe.errorhandlingspringbootstarter.mapper.HttpStatusMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;

import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.ElementKind;
import jakarta.validation.Path;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;

import java.util.Comparator;
import java.util.Optional;
Expand Down Expand Up @@ -136,6 +135,7 @@ private String getMessage(ConstraintViolation<?> constraintViolation) {
}

private String getMessage(ConstraintViolationException exception) {
return "Validation failed. Error count: " + exception.getConstraintViolations().size();
return errorMessageMapper.getErrorMessageIfConfiguredInProperties(exception)
.orElseGet(() -> "Validation failed. Error count: " + exception.getConstraintViolations().size());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import io.github.wimdeblauwe.errorhandlingspringbootstarter.ErrorHandlingProperties;

import java.util.Optional;

import static org.springframework.util.StringUtils.hasText;

/**
Expand All @@ -22,6 +24,10 @@ public String getErrorMessage(Throwable exception) {
return exception.getMessage();
}

public Optional<String> getErrorMessageIfConfiguredInProperties(Throwable exception) {
return Optional.ofNullable(getErrorMessageFromProperties(exception.getClass()));
}

public String getErrorMessage(String fieldSpecificCode, String code, String defaultMessage) {
if (properties.getMessages().containsKey(fieldSpecificCode)) {
return properties.getMessages().get(fieldSpecificCode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,20 @@ void testErrorCodeOverride(@Autowired ErrorHandlingProperties properties) throws
;
}

@Test
@WithMockUser
void testErrorMessageOverride(@Autowired ErrorHandlingProperties properties) throws Exception {
properties.getMessages().put("jakarta.validation.ConstraintViolationException", "There was a validation failure.");
mockMvc.perform(post("/test/validation")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"value2\": \"\"}")
.with(csrf()))
.andExpect(status().isBadRequest())
.andExpect(jsonPath("code").value("VALIDATION_FAILED"))
.andExpect(jsonPath("message").value("There was a validation failure."))
;
}

@Test
@WithMockUser
void testFieldErrorCodeOverride(@Autowired ErrorHandlingProperties properties) throws Exception {
Expand Down

0 comments on commit 88ad86e

Please sign in to comment.