Skip to content

fix: MessageConverterImpl 누락된 List/Record 필드 NullPointerException 방지#269

Open
z3rotig4r wants to merge 1 commit into
eGovFramework:mainfrom
z3rotig4r:fix/webservice-messageconverter-npe
Open

fix: MessageConverterImpl 누락된 List/Record 필드 NullPointerException 방지#269
z3rotig4r wants to merge 1 commit into
eGovFramework:mainfrom
z3rotig4r:fix/webservice-messageconverter-npe

Conversation

@z3rotig4r

Copy link
Copy Markdown
Contributor

배경

MessageConverterImpl.convertToValueObject()ListType·RecordType 분기에서 source를 각각 ((Collection<?>) source).toArray(), ((Map<String, Object>) source).entrySet()로 역참조합니다. 메시지 body에서 해당 List/Record 필드가 생략되면 sourcenull로 전달되고, 타입 체계는 null을 유효한 값으로 허용하므로 단순 잘못된 입력으로 볼 수 없습니다. 이 경우 두 분기 모두 NullPointerException이 발생합니다.

변경 내용

두 분기에서 역참조 전에 sourcenull이면 null을 그대로 반환하도록 가드를 추가합니다. 타입 체계가 허용하는 null 값 의미를 보존하며, 재귀 호출로 처리되는 중첩 필드의 null도 안전하게 반환·대입됩니다.

테스트

convertToValueObject(null, listType)convertToValueObject(null, recordType)NullPointerException 없이 null을 반환함을 확인하는 테스트를 추가했습니다. 수정 전에는 두 경우 모두 null 역참조로 실패합니다. 기존 변환 테스트도 그대로 통과합니다.

영향

정상 값(non-null)의 변환 동작은 변경되지 않으며, 누락된 List/Record 필드에 대해서만 NPE 대신 null이 반환됩니다.

convertToValueObject()는 ListType·RecordType 분기에서 source를 각각
((Collection) source).toArray(), ((Map) source).entrySet()로 역참조한다.
메시지 body에서 해당 List/Record 필드가 생략되면 source가 null로 전달되고,
타입 체계는 null을 유효한 값으로 허용하므로 단순 잘못된 입력으로 볼 수 없다.
이 경우 두 분기 모두 NullPointerException이 발생한다.

두 분기에서 역참조 전에 source가 null이면 null을 그대로 반환하도록 가드를 추가한다.
타입 체계가 허용하는 null 값 의미를 보존하며, 재귀로 처리되는 중첩 필드의 null도
안전하게 반환·대입된다.

테스트: convertToValueObject(null, listType/recordType)가 NPE 없이 null 반환 확인.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant