package org.karmaexchange.resources.msg;
import java.util.List;
import javax.annotation.Nullable;
import javax.ws.rs.WebApplicationException;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper=true)
@ToString(callSuper=true)
public class ValidationErrorInfo extends ErrorResponseMsg.ErrorInfo {
public enum ValidationErrorType {
RESOURCE_FIELD_VALUE_REQUIRED,
RESOURCE_FIELD_VALUE_INVALID,
RESOURCE_FIELD_VALUE_MUST_BE_GTEQ_SPECIFIED_FIELD,
RESOURCE_FIELD_VALUE_MUST_BE_GT_SPECIFIED_FIELD,
RESOURCE_FIELD_VALUE_MUST_BE_GTEQ_LIMIT,
RESOURCE_FIELD_VALUE_UNMODIFIABLE,
RESOURCE_FIELD_LIST_VALUE_INVALID_PERMISSIONS,
RESOURCE_FIELD_LIST_VALUE_INVALID_VALUE
}
private List<? extends ValidationError> validationErrors;
public static WebApplicationException createException(
List<? extends ValidationError> validationErrors) {
return createException(validationErrors, null);
}
public static WebApplicationException createException(
List<? extends ValidationError> validationErrors, @Nullable Throwable e) {
return ErrorResponseMsg.createException(new ValidationErrorInfo(validationErrors, e));
}
private ValidationErrorInfo(List<? extends ValidationError> validationErrors,
@Nullable Throwable e) {
super("Validation failure", Type.VALIDATION_FAILURE, e);
this.validationErrors = validationErrors;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ValidationError {
private ValidationErrorType errorType;
}
}