S SmartDocs
Series: Bridget java 27 lines · Updated 2026-03-30

ExpiryDateValidator.java

Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/validation/ExpiryDateValidator.java

package com.checkout.payment.gateway.validation;

import com.checkout.payment.gateway.model.PostPaymentRequest;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import java.time.LocalDate;
import java.time.YearMonth;

/**
 * Validate payment request's expiry month + year is in the future
 * The expiry day is at the end of the month
 */
public class ExpiryDateValidator implements ConstraintValidator<ValidExpiryDate, PostPaymentRequest> {

  @Override
  public boolean isValid(PostPaymentRequest request, ConstraintValidatorContext context) {
    // Not deal with null value and invalid month is this validator.
    if (request.getExpiryMonth() == null || request.getExpiryYear() == null
        || request.getExpiryMonth() < 1 || request.getExpiryMonth() > 12) {
      return true;
    }
    return YearMonth.of(request.getExpiryYear(), request.getExpiryMonth())
        .atEndOfMonth()
        .isAfter(LocalDate.now());
  }

}

Related articles

Bridget java Updated 2026-03-30

PaymentGatewayApplication.java

PaymentGatewayApplication.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/PaymentGatewayApplication.java).

Read article →
Bridget java Updated 2026-03-20

ApplicationConfiguration.java

ApplicationConfiguration.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/ApplicationConfiguration.java).

Read article →
Bridget java Updated 2026-03-30

RequestResponseLogger.java

RequestResponseLogger.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/RequestResponseLogger.java).

Read article →
Bridget java Updated 2026-04-14

PaymentGatewayController.java

PaymentGatewayController.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/controller/PaymentGatewayController.java).

Read article →
Bridget java Updated 2026-03-20

PaymentStatus.java

PaymentStatus.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/enums/PaymentStatus.java).

Read article →
Bridget java Updated 2026-03-29

BankErrorException.java

BankErrorException.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/exception/BankErrorException.java).

Read article →