[framework] TxCore → common-framework (ACM-FW-001)
This commit is contained in:
parent
3e14ccb65c
commit
7b4c48295d
1 changed files with 76 additions and 17 deletions
|
|
@ -1,31 +1,90 @@
|
||||||
package com.klaro.acquirecore.framework;
|
package com.klaro.acquirecore.framework;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.io.Serializable;
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 레거시 TxCore {@code TXBUF} (고정 슬롯 키/값 버퍼) 의 Spring 대체 자리표시자.
|
* Transaction context DTO carrying runtime state across service calls.
|
||||||
*
|
* Mirrors the C tx_context struct fields.
|
||||||
* <p>실 전환에서는 요청/응답 DTO(record) 가 정형 필드를 담고, 이 컨텍스트는
|
|
||||||
* 서비스 체인({@code tx_call}) 간 전달되는 느슨한 키/값 상태만 보관한다.
|
|
||||||
*/
|
*/
|
||||||
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} 상당). */
|
private String transactionId;
|
||||||
public TxContext put(String key, Object value) {
|
private String serviceName;
|
||||||
slots.put(key, value);
|
private TxStatus status;
|
||||||
return this;
|
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 TxContext(String serviceName) {
|
||||||
public Object get(String key) {
|
this();
|
||||||
return slots.get(key);
|
this.serviceName = serviceName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 적재된 슬롯 개수. */
|
public String getTransactionId() {
|
||||||
public int size() {
|
return transactionId;
|
||||||
return slots.size();
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue