Adapter 라이브러리
EIMS 어댑터 라이브러리는 EIMS와 외부 어댑터 간의 배포 및 배포해제 요청 및 응답을 위한 DTO 모델을 제공합니다.
어댑터 개발자는 이 라이브러리에서 제공하는 DTO를 사용하여 EIMS로부터 배포 요청을 받고, 처리 결과를 응답하는 API를 구현합니다.
패키지 구조
com.tmax.anyeims.adapter.model.dto
├── AdapterDeploymentRequest # 배포 요청 DTO
├── AdapterUndeploymentRequest # 배포 해제 요청 DTO
└── AdapterDeploymentResponse # 응답 DTO
DTO 모델
어댑터 라이브러리에서 제공하는 DTO 모델은 다음과 같습니다.
|
아래 DTO에서 사용되는 UserSimpleInfo, InterfaceDefinition, MessageDefinition, CommonMessageMappingExpression 등의 타입은 eims-export-model 라이브러리에서 제공됩니다. 각 타입의 상세 명세는 Export Model 라이브러리를 참고하세요. |
AdapterDeploymentRequest
EIMS에서 어댑터로 배포 요청을 전달할 때 사용하는 DTO입니다.
| 필드명 | 타입 | 설명 |
|---|---|---|
creator |
UserSimpleInfo |
배포 요청자 정보 |
interfaceDefinition |
InterfaceDefinition |
인터페이스 명세 |
messageDefinitions |
Map<Long, MessageDefinition> |
메시지 명세 (ID를 키로 하는 Map) |
commonMessageMappings |
Map<Long, CommonMessageMappingExpression> |
레퍼런스 매핑 명세 (ID를 키로 하는 Map) |
AdapterUndeploymentRequest
EIMS에서 어댑터로 배포 해제 요청을 전달할 때 사용하는 DTO입니다.
| 필드명 | 타입 | 설명 |
|---|---|---|
interfaceId |
String |
배포 해제할 인터페이스 ID |
messageIds |
List<String> |
배포 해제할 메시지 ID 목록 |
AdapterDeploymentResponse
어댑터에서 EIMS로 처리 결과를 응답할 때 사용하는 DTO입니다.
| 필드명 | 타입 | 설명 |
|---|---|---|
message |
String |
응답 메시지 |
code |
String |
응답 코드(예: SUCCESS, ERROR) |
isError |
Boolean |
에러 여부 |
정적 팩토리 메서드
간편하게 응답 객체를 생성할 수 있는 정적 팩토리 메서드를 제공합니다.
// 성공 응답 생성
AdapterDeploymentResponse.success("배포가 완료되었습니다.");
// 실패 응답 생성
AdapterDeploymentResponse.failure("배포 중 오류가 발생했습니다.");
구현 예시
다음은 배포 및 배포 해제 요청을 처리하는 예시입니다.
|
아래 예시 코드는 Spring Boot 기반으로 작성되었습니다. |
-
배포 API 구현
AdapterDeploymentRequest를 Request Body로 받는 POST API를 구현하고, AdapterDeploymentResponse를 반환합니다.
@RestController @RequestMapping("/v1/adapter") @RequiredArgsConstructor public class AdapterDeployController { @PostMapping("/deploy") public ResponseEntity<AdapterDeploymentResponse> deploy( @RequestBody AdapterDeploymentRequest request) { try { // 1. 요청 데이터 추출 InterfaceDefinition interfaceDefinition = request.getInterfaceDefinition(); Map<Long, MessageDefinition> messages = request.getMessageDefinitions(); // 2. 배포 로직 수행 // ... 어댑터별 배포 처리 로직 구현 ... // 3. 성공 응답 반환 return ResponseEntity.ok(AdapterDeploymentResponse.success("배포가 완료되었습니다.")); } catch (Exception e) { // 4. 실패 응답 반환 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(AdapterDeploymentResponse.failure(e.getMessage())); } } } -
배포 해제 API 구현
AdapterUndeploymentRequest를 Request Body로 받는 POST API를 구현하고, AdapterDeploymentResponse를 반환합니다.
@RestController @RequestMapping("/v1/adapter") @RequiredArgsConstructor public class AdapterUndeployController { @PostMapping("/undeploy") public ResponseEntity<AdapterDeploymentResponse> undeploy( @RequestBody AdapterUndeploymentRequest request) { try { // 1. 요청 데이터 추출 String interfaceId = request.getInterfaceId(); List<String> messageIds = request.getMessageIds(); // 2. 배포 해제 로직 수행 // ... 어댑터별 배포 해제 처리 로직 구현 ... // 3. 성공 응답 반환 return ResponseEntity.ok(AdapterDeploymentResponse.success("배포 해제가 완료되었습니다.")); } catch (Exception e) { // 4. 실패 응답 반환 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(AdapterDeploymentResponse.failure(e.getMessage())); } } }
의존성 추가
어댑터 프로젝트에서 이 라이브러리를 사용하려면 JAR 파일을 직접 프로젝트에 추가합니다.
|
eims-adapter는 DTO 필드 타입으로 eims-export-model의 클래스들을 사용합니다. 따라서 eims-export-model JAR 파일도 함께 추가해야 합니다. |
필요 JAR 파일
| JAR 파일 | 설명 |
|---|---|
eims-adapter-{version}.jar |
EIMS Adapter 라이브러리 |
eims-export-model-{version}.jar |
DTO 필드 타입 제공 |
Maven(로컬 JAR 참조)
<dependencies>
<!-- EIMS Adapter Library -->
<dependency>
<groupId>com.tmax.anyeims</groupId>
<artifactId>eims-adapter</artifactId>
<version>{version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/eims-adapter-{version}.jar</systemPath>
</dependency>
<!-- EIMS Export Model(DTO 필드 타입 제공) -->
<dependency>
<groupId>com.tmax.anyeims</groupId>
<artifactId>eims-export-model</artifactId>
<version>{version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/eims-export-model-{version}.jar</systemPath>
</dependency>
</dependencies>