package com.wb.domainserver.response; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.wb.domainserver.exception.WnbtException; import com.wb.domainserver.exception.WnbtRestException; import com.wb.domainserver.exception.code.ErrorCode; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.util.Optional; @Data @AllArgsConstructor @Slf4j public class WnbtResponseBody { private String resultCode; private String message; private Object result; private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().registerModule(new JavaTimeModule()) // LocalDateTime 지원 .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) // ISO 형식 .setSerializationInclusion(JsonInclude.Include.NON_NULL); // null 값 제외 public WnbtResponseBody(Object result) { try{ this.result = OBJECT_MAPPER.writeValueAsString(result); } catch (JsonProcessingException e) { log.error(e.getMessage()); throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR); } } public WnbtResponseBody(WnbtRestException ex, Object result) { this.result = result; } public WnbtResponseBody(WnbtException ex){ this.resultCode = Optional.ofNullable(ex.getCode()).orElse("FAIL"); this.message = ex.getMessage(); } public WnbtResponseBody(WnbtRestException ex){ this.resultCode = Optional.ofNullable(ex.getCode()).orElse("FAIL"); this.message = ex.getMessage(); } }