[framework] TxCore → common-framework (ACM-FW-001)

This commit is contained in:
forge-bot 2026-07-18 11:11:51 +00:00
parent 3e14ccb65c
commit 7b4c48295d

View file

@ -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 대체 자리표시자.
*
* <p> 전환에서는 요청/응답 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<String, Object> 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<String, Object> 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<String, Object> getMetadata() {
return metadata;
}
public void setMetadata(Map<String, Object> metadata) {
this.metadata = metadata;
}
public void markCommitted() {
this.status = TxStatus.COMMITTED;
this.committedAt = Instant.now();
}
public void markRolledBack() {
this.status = TxStatus.ROLLED_BACK;
}
}