26 Aralık 2023 Salı

Bean Validation @GroupSequence Anotasyonu

Örnek
Elimizde şöyle bir kod olsun
public class SampleRequest {

  @NotNull
  LocalDate startDate;

  @NotNull
  LocalDate endDate;

  @AssertTrue(message = "Start date is after the end date")
  public boolean isEndDateAfterStartDate() {
    return !endDate.isBefore(startDate);
  }
}
Jakarta Constraint anotasyonları rastgele sırada yani karışık sırada çalışıyor. Bu yüzden endDate alanı null ise @NotNull'dan önce @AssertTrue çalışabilir ve NullPointerException alırız. Bunu önlemek için  Jakarta'ya bir sıralama belirtmek gerekir. Bunun için @GroupSequence Anotasyonu kullanılır. Buna Validation Groups deniliyor.  

Şöyle yaparız. Önce groups değerine sahip olmayanlar daha sonra da groups olarak DateExtendedValidation değerine sahip olan Constraint anotasyonları çalıştırılır
// introduce the flag interface for group marking
public interface DateExtendedValidation {}

@GroupSequence({SampleRequest.class, DateExtendedValidation.class})
public class SampleRequest {
  
  @NotNull
  LocalDate startDate;

  @NotNull
  LocalDate endDate;

  @AssertTrue(message = "Start date is after the end date",
              groups = DateExtendedValidation.class)
  public boolean isEndDateAfterStartDate() {
    return !endDate.isBefore(startDate);
  }
}



Hiç yorum yok:

Yorum Gönder

Bean Validation @GroupSequence Anotasyonu

Örnek Elimizde şöyle bir kod olsun public class SampleRequest {   @NotNull   LocalDate startDate;   @NotNull   LocalDate endDate;   @AssertT...