이 글이 답하는 질문
- CAP Java 핸들러에서 요청 데이터를 타입 안전하게 꺼내는 방법은?
- EventContext가 CdsContext와 다른 점은?
- put/get 대신 typed accessor를 쓰면 뭐가 좋은가?
EventContext란
CAP Java의 EventContext는 핸들러 파라미터에서 이벤트 데이터를 타입 안전하게 접근하는 인터페이스입니다. context.get("data") 대신 생성된 typed interface를 사용해 컴파일 타임에 오류를 잡을 수 있습니다.
직접 해보기
1. 기본 핸들러 — context.get() 방식 (타입 불안전)
@On(event = "submitOrder", entity = Orders_.CDS_NAME)
public void onSubmitOrder(CdsContext context) {
Map data = (Map) context.get("data"); // unchecked cast
String orderId = (String) data.get("orderId");
}
2. EventContext 인터페이스 정의
// srv/src/main/java/.../SubmitOrderContext.java
@EventName("submitOrder")
public interface SubmitOrderContext extends EventContext {
String getOrderId();
Integer getQuantity();
Result getResult();
void setResult(Result result);
}
3. typed accessor 사용 (타입 안전)
@On(event = SubmitOrderContext.EVENT, entity = Orders_.CDS_NAME)
public void onSubmitOrder(SubmitOrderContext context) {
String orderId = context.getOrderId(); // 타입 안전!
int qty = context.getQuantity();
context.setResult(Result.of(orderId, qty));
context.setCompleted();
}
삽질 노트
@EventName값이 CDS 서비스 액션명과 정확히 일치해야 함 — 오타 시 핸들러 무시됨context.setCompleted()빠뜨리면 다음 핸들러가 계속 실행됨- typed context는
cds-maven-plugin으로 자동 생성 가능
핵심 한 줄
EventContext typed interface = CAP Java 핸들러의 타입 안전 데이터 접근 + 컴파일 타임 검증.
더 파볼 주제
- CAP Java — cds-maven-plugin으로 typed model 자동 생성
- CAP Java — Before/On/After 핸들러 실행 순서
- CAP Java — 커스텀 액션/펑션 구현 패턴
댓글 0
아직 댓글이 없습니다.