ExceptionWrappingError.java
package cl.tica.portfolio.recipeapi.application.models;
import cl.tica.portfolio.recipeapi.application.dto.ValidationFieldsError;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
public class ExceptionWrappingError {
private final LocalDateTime timespan;
private final String code;
private final int status;
private final String details;
private final String instance;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private final List<ValidationFieldsError> errors;
public ExceptionWrappingError(int status, String code, String details, String instance,
List<ValidationFieldsError> errors) {
this.timespan = LocalDateTime.now();
this.status = status;
this.code = code;
this.details = details;
this.instance = instance;
this.errors = errors;
}
public ExceptionWrappingError(int status, String code, String details, String instance) {
this(status, code, details, instance, new ArrayList<>());
}
public LocalDateTime getTimespan() {
return timespan;
}
public String getCode() {
return code;
}
public int getStatus() {
return status;
}
public String getDetails() {
return details;
}
public String getInstance() {
return instance;
}
public List<ValidationFieldsError> getErrors() {
return errors;
}
public String toJSONString() {
ObjectMapper mapper = new ObjectMapper();
ObjectNode node = mapper.createObjectNode();
node.put("timespan", getTimespan().toString());
node.put("status", getStatus());
node.put("code", getCode());
node.put("details", getDetails());
node.put("instance", getInstance());
if (!getErrors().isEmpty()) {
ArrayNode errorsNode = mapper.valueToTree(getErrors());
node.set("errors", errorsNode);
}
return node.toString();
}
}