diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java index edf685ce87..0f9f267fb5 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.api.v2.resources; import org.mapstruct.AfterMapping; @@ -32,46 +32,29 @@ import org.slf4j.MDC; import sonia.scm.ScmConstraintViolationException; import sonia.scm.ScmConstraintViolationException.ScmConstraintViolation; -import java.util.List; -import java.util.stream.Collectors; - @Mapper -public abstract class ScmViolationExceptionToErrorDtoMapper { +public interface ScmViolationExceptionToErrorDtoMapper { @Mapping(target = "errorCode", ignore = true) @Mapping(target = "transactionId", ignore = true) @Mapping(target = "context", ignore = true) - public abstract ErrorDto map(ScmConstraintViolationException exception); + ErrorDto map(ScmConstraintViolationException exception); @AfterMapping - void setTransactionId(@MappingTarget ErrorDto dto) { + default void setTransactionId(@MappingTarget ErrorDto dto) { dto.setTransactionId(MDC.get("transaction_id")); } - @AfterMapping - void mapViolations(ScmConstraintViolationException exception, @MappingTarget ErrorDto dto) { - List violations = - exception.getViolations() - .stream() - .map(this::createViolationDto) - .collect(Collectors.toList()); - dto.setViolations(violations); - } - - private ErrorDto.ConstraintViolationDto createViolationDto(ScmConstraintViolation violation) { - ErrorDto.ConstraintViolationDto constraintViolationDto = new ErrorDto.ConstraintViolationDto(); - constraintViolationDto.setMessage(violation.getMessage()); - constraintViolationDto.setPath(violation.getPropertyPath()); - return constraintViolationDto; - } + @Mapping(source = "propertyPath", target = "path") + ErrorDto.ConstraintViolationDto map(ScmConstraintViolation violation); @AfterMapping - void setErrorCode(@MappingTarget ErrorDto dto) { + default void setErrorCode(@MappingTarget ErrorDto dto) { dto.setErrorCode("3zR9vPNIE1"); } @AfterMapping - void setMessage(@MappingTarget ErrorDto dto) { + default void setMessage(@MappingTarget ErrorDto dto) { dto.setMessage("input violates conditions (see violation list)"); } }