From 84e415aebae7cb7ddb749c147c2f2ba97d97d892 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:07:01 +0000 Subject: [PATCH] =?UTF-8?q?[framework]=20TxCore=20=E2=86=92=20common-frame?= =?UTF-8?q?work=20(ACM-FW-001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acquirecore/framework/TxContext.java | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/boot/common-framework/src/main/java/com/klaro/acquirecore/framework/TxContext.java b/boot/common-framework/src/main/java/com/klaro/acquirecore/framework/TxContext.java index 1a56634..ba2748b 100644 --- a/boot/common-framework/src/main/java/com/klaro/acquirecore/framework/TxContext.java +++ b/boot/common-framework/src/main/java/com/klaro/acquirecore/framework/TxContext.java @@ -1,31 +1,49 @@ package com.klaro.acquirecore.framework; -import java.util.HashMap; -import java.util.Map; +import java.io.Serializable; +import java.time.Instant; +import java.util.UUID; /** - * 레거시 TxCore {@code TXBUF} (고정 슬롯 키/값 버퍼) 의 Spring 대체 자리표시자. - * - *

실 전환에서는 요청/응답 DTO(record) 가 정형 필드를 담고, 이 컨텍스트는 - * 서비스 체인({@code tx_call}) 간 전달되는 느슨한 키/값 상태만 보관한다. + * Transaction context DTO - represents the state of a transaction. + * Migrated from txcore.h TX_CONTEXT. */ -public final class TxContext { +public class TxContext implements Serializable { - private final Map slots = new HashMap<>(); + private static final long serialVersionUID = 1L; - /** TXBUF 필드 설정 (레거시 {@code Fchg} 상당). */ - public TxContext put(String key, Object value) { - slots.put(key, value); - return this; + private String transactionId; + private TransactionStatus status; + private Instant startedAt; + private Instant committedAt; + private String serviceName; + private String errorMessage; + + public TxContext() { + this.transactionId = UUID.randomUUID().toString(); + this.status = TransactionStatus.INITIALIZED; + this.startedAt = Instant.now(); } - /** TXBUF 필드 조회 (레거시 {@code Fget} 상당). */ - public Object get(String key) { - return slots.get(key); + public TxContext(String serviceName) { + this(); + this.serviceName = serviceName; } - /** 적재된 슬롯 개수. */ - public int size() { - return slots.size(); + public String getTransactionId() { return transactionId; } + public void setTransactionId(String transactionId) { this.transactionId = transactionId; } + public TransactionStatus getStatus() { return status; } + public void setStatus(TransactionStatus status) { this.status = status; } + public Instant getStartedAt() { return startedAt; } + public void setStartedAt(Instant startedAt) { this.startedAt = startedAt; } + public Instant getCommittedAt() { return committedAt; } + public void setCommittedAt(Instant committedAt) { this.committedAt = committedAt; } + public String getServiceName() { return serviceName; } + public void setServiceName(String serviceName) { this.serviceName = serviceName; } + public String getErrorMessage() { return errorMessage; } + public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } + + public enum TransactionStatus { + INITIALIZED, ACTIVE, COMMITTED, ROLLED_BACK, FAILED } }