69 lines
4.0 KiB
HTML
69 lines
4.0 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>RequestBoundApiResultFactory.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">project-auth-server</a> > <a href="index.source.html" class="el_package">com.project.auth.config.web</a> > <span class="el_source">RequestBoundApiResultFactory.java</span></div><h1>RequestBoundApiResultFactory.java</h1><pre class="source lang-java linenums">package com.project.auth.config.web;
|
|
|
|
import com.project.auth.presentation.support.response.ApiResult;
|
|
import com.project.auth.presentation.support.response.ApiResultFactory;
|
|
import org.slf4j.MDC;
|
|
|
|
import java.time.Clock;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
|
|
public class RequestBoundApiResultFactory implements ApiResultFactory {
|
|
|
|
private static final String TRACE_ID_KEY = "traceId";
|
|
/**
|
|
* MDC에 traceId가 없을 때 사용하는 sentinel. JSON {@code null}로 그대로 두면
|
|
* TraceIdFilter가 누락/오설정된 사실이 가려지므로, 명시적인 placeholder 문자열로
|
|
* 로그·대시보드에서 즉시 식별 가능하게 한다.
|
|
*/
|
|
static final String MISSING_TRACE_ID = "-";
|
|
<span class="fc" id="L22"> private static final DateTimeFormatter TIMESTAMP_FORMATTER = DateTimeFormatter.ISO_INSTANT;</span>
|
|
|
|
private final Clock clock;
|
|
|
|
<span class="fc" id="L26"> public RequestBoundApiResultFactory(Clock clock) {</span>
|
|
<span class="fc" id="L27"> this.clock = Objects.requireNonNull(clock, "clock must not be null");</span>
|
|
<span class="fc" id="L28"> }</span>
|
|
|
|
@Override
|
|
public <T> ApiResult<T> success(String code, String message, T data) {
|
|
<span class="fc" id="L32"> return result(true, code, message, data, null);</span>
|
|
}
|
|
|
|
@Override
|
|
public ApiResult<Void> success(String code, String message) {
|
|
<span class="nc" id="L37"> return result(true, code, message, null, null);</span>
|
|
}
|
|
|
|
@Override
|
|
public ApiResult<Void> failure(String code, String message) {
|
|
<span class="fc" id="L42"> return result(false, code, message, null, null);</span>
|
|
}
|
|
|
|
@Override
|
|
public ApiResult<Void> failure(String code, String message, Map<String, List<String>> errors) {
|
|
<span class="fc" id="L47"> return result(false, code, message, null, errors);</span>
|
|
}
|
|
|
|
private <T> ApiResult<T> result(
|
|
boolean success,
|
|
String code,
|
|
String message,
|
|
T data,
|
|
Map<String, List<String>> errors
|
|
) {
|
|
<span class="fc" id="L57"> String traceId = MDC.get(TRACE_ID_KEY);</span>
|
|
<span class="fc" id="L58"> return new ApiResult<>(</span>
|
|
success,
|
|
code,
|
|
message,
|
|
data,
|
|
errors,
|
|
<span class="fc bfc" id="L64" title="All 4 branches covered."> traceId == null || traceId.isBlank() ? MISSING_TRACE_ID : traceId,</span>
|
|
<span class="fc" id="L65"> TIMESTAMP_FORMATTER.format(clock.instant())</span>
|
|
);
|
|
}
|
|
}
|
|
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.14.202510111229</span></div></body></html> |