From 430630a02b0ee4890886d2ec7666715607bd5b85 Mon Sep 17 00:00:00 2001 From: pricelees Date: Sat, 27 Sep 2025 20:15:54 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20MDC=20=EC=9C=A0=ED=8B=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=9D=B4=EB=8F=99(service=20->=20common.u?= =?UTF-8?q?tils)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/utils/build.gradle.kts | 5 ++++ .../common/utils/MdcPrincipalIdUtil.kt | 26 +++++++++++++++++ .../common/utils/MdcPrincipalIdUtilTest.kt | 28 +++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 common/utils/build.gradle.kts create mode 100644 common/utils/src/main/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtil.kt create mode 100644 common/utils/src/test/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtilTest.kt diff --git a/common/utils/build.gradle.kts b/common/utils/build.gradle.kts new file mode 100644 index 00000000..ad519ea1 --- /dev/null +++ b/common/utils/build.gradle.kts @@ -0,0 +1,5 @@ +dependencies { + implementation("org.slf4j:slf4j-api:2.0.17") + + testImplementation("ch.qos.logback:logback-classic:1.5.18") +} \ No newline at end of file diff --git a/common/utils/src/main/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtil.kt b/common/utils/src/main/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtil.kt new file mode 100644 index 00000000..f96e2b06 --- /dev/null +++ b/common/utils/src/main/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtil.kt @@ -0,0 +1,26 @@ +package com.sangdol.common.utils + +import org.slf4j.MDC +import java.util.* + +object MdcPrincipalIdUtil { + const val MDC_PRINCIPAL_ID_KEY = "principal_id" + + fun extractAsLongOrNull(): Long? { + return MDC.get(MDC_PRINCIPAL_ID_KEY)?.toLong() + } + + fun extractAsOptionalLongOrEmpty(): Optional { + return MDC.get(MDC_PRINCIPAL_ID_KEY)?.let { + Optional.of(it.toLong()) + } ?: Optional.empty() + } + + fun set(id: String) { + MDC.put(MDC_PRINCIPAL_ID_KEY, id) + } + + fun clear() { + MDC.remove(MDC_PRINCIPAL_ID_KEY) + } +} diff --git a/common/utils/src/test/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtilTest.kt b/common/utils/src/test/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtilTest.kt new file mode 100644 index 00000000..388c61d8 --- /dev/null +++ b/common/utils/src/test/kotlin/com/sangdol/common/utils/MdcPrincipalIdUtilTest.kt @@ -0,0 +1,28 @@ +package com.sangdol.common.utils + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe +import java.util.* + +class MdcPrincipalIdUtilTest : StringSpec({ + + val id = 1872847943L + + "값을 설정한다." { + MdcPrincipalIdUtil.set(id.toString()).also { + MdcPrincipalIdUtil.extractAsLongOrNull() shouldBe id + MdcPrincipalIdUtil.extractAsOptionalLongOrEmpty() shouldBe Optional.of(id) + } + } + + "값을 제거한다." { + MdcPrincipalIdUtil.set(id.toString()).also { + MdcPrincipalIdUtil.extractAsLongOrNull() shouldBe id + } + + MdcPrincipalIdUtil.clear().also { + MdcPrincipalIdUtil.extractAsLongOrNull() shouldBe null + MdcPrincipalIdUtil.extractAsOptionalLongOrEmpty() shouldBe Optional.empty() + } + } +}) \ No newline at end of file