Merge branch 'develop' into feature/delete_branches

This commit is contained in:
Eduard Heimbuch
2020-11-12 14:58:51 +01:00
committed by GitHub
31 changed files with 600 additions and 71 deletions

View File

@@ -34,20 +34,22 @@ import sonia.scm.ExceptionWithContext;
import java.util.Optional;
@Mapper
public abstract class ExceptionWithContextToErrorDtoMapper {
public interface ExceptionWithContextToErrorDtoMapper {
@Mapping(target = "errorCode", source = "code")
@Mapping(target = "transactionId", ignore = true)
@Mapping(target = "violations", ignore = true)
public abstract ErrorDto map(ExceptionWithContext exception);
ErrorDto map(ExceptionWithContext exception);
@SuppressWarnings("OptionalUsedAsFieldOrParameterType") // is ok for mapping
public String mapOptional(Optional<String> optionalString) {
default String mapOptional(Optional<String> optionalString) {
return optionalString.orElse(null);
}
@AfterMapping
void setTransactionId(@MappingTarget ErrorDto dto) {
default void setTransactionId(@MappingTarget ErrorDto dto) {
dto.setTransactionId(MDC.get("transaction_id"));
}
ErrorDto.AdditionalMessageDto map(ExceptionWithContext.AdditionalMessage message);
}

View File

@@ -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<ErrorDto.ConstraintViolationDto> 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)");
}
}