1 package io.extact.rms.client.api.exception; 2 3 import java.util.List; 4 import java.util.stream.Collectors; 5 6 public class ValidateClientException extends RentalReservationClientException { 7 8 private final transient ValidationErrorMessage errorMessage; 9 10 public ValidateClientException(ValidationErrorMessage errorMessage) { 11 super("サーバ側でバリデーションエラーが発生しました"); 12 this.errorMessage = errorMessage; 13 } 14 15 @Override 16 public String getMessage() { 17 String detailMessage = errorMessage.getErrorItems().stream() 18 .map(t -> t.getFieldName() + ":" + t.getMessage()) 19 .collect(Collectors.joining(",")); 20 return super.getMessage() + System.lineSeparator() + detailMessage; 21 } 22 23 public static class ValidationErrorMessage { 24 private String errorReason; 25 private String errorMessage; 26 private List<ValidationErrorItem> errorItems; 27 28 public String getErrorReason() { 29 return errorReason; 30 } 31 public void setErrorReason(String errorReason) { 32 this.errorReason = errorReason; 33 } 34 public String getErrorMessage() { 35 return errorMessage; 36 } 37 public void setErrorMessage(String errorMessage) { 38 this.errorMessage = errorMessage; 39 } 40 public List<ValidationErrorItem> getErrorItems() { 41 return errorItems; 42 } 43 public void setErrorItems(List<ValidationErrorItem> errorItems) { 44 this.errorItems = errorItems; 45 } 46 } 47 48 public static class ValidationErrorItem { 49 private String fieldName; 50 private String message; 51 public String getFieldName() { 52 return fieldName; 53 } 54 public void setFieldName(String fieldName) { 55 this.fieldName = fieldName; 56 } 57 public String getMessage() { 58 return message; 59 } 60 public void setMessage(String message) { 61 this.message = message; 62 } 63 } 64 }