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>

Gradle(로컬 JAR 참조)

dependencies {
    // EIMS Adapter Library
    implementation files('libs/eims-adapter-{version}.jar')

    // EIMS Export Model (DTO 필드 타입 제공)
    implementation files('libs/eims-export-model-{version}.jar')
}