# compile error를 제거하기 위해 updateState() 메서드 추가
# DB에 상태 값을 저장하기 위해 chageState() 메서드를 추가한다. 이때, 필드 값 변경은 super.chageState() 메서드를 통해하고, jobDataDao를 통해 persistence영역에 저장한다.
# JobData 패키지 경로 수정
# JobImpl 생성자 변경에 따른 기존 코드 변경
# 테스트를 실행하면 실패가 발생하는데 원인은 Spring Data가 앞서 추가한 updateState() 메서드에 대한 알맞은 구현체를 만들지 못하기 때문이다.
테스트를 성공시키기 위해서는 JPA QL을 직접 지정해서 수정 기능을 완성 짓도록 하면 된다.
# JobIntTest에 검증하는 기능을 추가해서 넣자. Job객체는 변환 과정 중 에러가 발생하면 exceptionMessage에 에러 원인을 보관한다. JobIntTest는 중간 과정에서 오류가 발생한 경우에 상태 값이 올바른지 테스트 하고 있으므로, 다음과 같이 오류 메시지가 올바르게 저장되는 코드를 추가했다.
테스트를 돌려보면 알겠지만 실패가 발생한다.
이유는 상태 변경과 동일하게 메모리 상에 오류 메시지를 보관하고 있으나 DB에는 반영이 되지 않아 통화하지 못한 것이다. 이 부분은 상태를 변경하는 부분과 비슷하게 구현하면 될 것이다.
# ExceptionMessage를 처리할 유틸 클래스
# updateState() 메서드와 동일하게 updateExceptionMessage() 메서드를 구현한다.
# changeState(), exceptionOccurred() 메서드 접근자를 private에서 protected로 변경했다.
이로써 JobImple 클래스에서 위 두 기능을 오버라이딩 할 수 있으며 하위 클래스에 이 정도 개방해주는 것은 허용해도 괜찮을 것 같다.
# MemoryJobQueue 테스트 케이스 작성
# AddJobService, TranscodingService 빈 객체 등록
- jobQueue는 Bean을 따로 등록하지 않고 MemoryJobQueue를 생성한다.
# transcodingRunner 빈 객체 등록
# 소스 리펙토링
- while() 구문에서 break 문을 제거하기 위해 try-catch 블럭으로 감쌈
# Thumbnail 추출시 사용할 ThumbnailPolicy
# 동작도 안하고...왜 하는지 모르겠네..이건...과감히 이부분은 스킵하자
# 동작도 안하고...왜 하는지 모르겠네..이건...과감히 이부분은 스킵하자