У меня есть несколько целых чисел, которые я проверяю, но они записаны в виде серии операторов if, которые не выполняются в отчете SonarQube. Как вы можете видеть ниже, я хочу проверить, что если (например) канал 0 не является нулевым, а также, если целое число не присутствует в моем хранилище, сопоставьте с некоторым сообщением об ошибке, которое я определил. Я попытался удалить приведенную ниже проверку! = Null и реализовал аннотацию @NullOrNotBlank, определенную в ответе с самым высоким рейтингом, и присвоил ее своему полю, но это работает только для строки, которую я считаю: Java-аннотация для Null, но не пустони Пробел
Когда я включаю любое другое поле, которое не является каналом в тестовом сообщении, я получаю ошибку NullpointerException для поля канала.
Как я могу обновить пользовательскую аннотацию, чтобы включить в проверку целые числа? Или есть более подходящая аннотация, которую я должен использовать? Или, может быть, есть лучший способ написать заявление if?
Пример - "канал": 0,
if (updateCaseDataVO.getChannel() != null
&& !(channelRepository.findById(updateCaseDataVO.getChannel().getChannel()).isPresent())) {
map.put(ErrorConstants.CHANNEL, ErrorConstants.CHANNEL_ERROR_MESSAGE);
}
@ConstraintComposition(CompositionType.OR)
@Null
@NotBlank
@ReportAsSingleViolation
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
public @interface NullOrNotBlank {
String message() default "{org.hibernate.validator.constraints.NullOrNotBlank.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}