mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-07-04 09:49:26 +02:00
Merge branch 'develop' into feature/delete_branches
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user