ZoneIdValidator.java

package com.seebie.server.validation;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

import java.time.DateTimeException;
import java.time.ZoneId;

public class ZoneIdValidator implements ConstraintValidator<ZoneIdConstraint, String> {

    @Override
    public void initialize(ZoneIdConstraint constraint) {

    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {

        // Null values are NOT considered valid
        if (value == null) {
            return false;
        }

        try {
            ZoneId.of(value);
        }
        catch (DateTimeException e) {
            return false;
        }

        return true;
    }
}