From 7b4c48295db80c18d64cc6e87e29b723cb7cb921 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:11:51 +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 | 93 +++++++++++++++---- 1 file changed, 76 insertions(+), 17 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..35e5443 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,90 @@ package com.klaro.acquirecore.framework; -import java.util.HashMap; +import java.io.Serializable; +import java.time.Instant; import java.util.Map; +import java.util.UUID; /** - * 레거시 TxCore {@code TXBUF} (고정 슬롯 키/값 버퍼) 의 Spring 대체 자리표시자. - * - *

실 전환에서는 요청/응답 DTO(record) 가 정형 필드를 담고, 이 컨텍스트는 - * 서비스 체인({@code tx_call}) 간 전달되는 느슨한 키/값 상태만 보관한다. + * Transaction context DTO carrying runtime state across service calls. + * Mirrors the C tx_context struct fields. */ -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 String serviceName; + private TxStatus status; + private Instant startedAt; + private Instant committedAt; + private Map metadata; + + public TxContext() { + this.transactionId = UUID.randomUUID().toString(); + this.status = TxStatus.INITIAL; + 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 String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public TxStatus getStatus() { + return status; + } + + public void setStatus(TxStatus 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 Map getMetadata() { + return metadata; + } + + public void setMetadata(Map metadata) { + this.metadata = metadata; + } + + public void markCommitted() { + this.status = TxStatus.COMMITTED; + this.committedAt = Instant.now(); + } + + public void markRolledBack() { + this.status = TxStatus.ROLLED_BACK; } }