SchemaValidator.java

package jasper.domain.validator;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jsontypedef.jtd.InvalidSchemaException;
import com.jsontypedef.jtd.Schema;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

public class SchemaValidator implements ConstraintValidator<SchemaValid, JsonNode> {
	public static final ObjectMapper mapper = new ObjectMapper();

	@Override
	public boolean isValid(JsonNode value, ConstraintValidatorContext context) {
		var schema = mapper.convertValue(value, Schema.class);
		if (value == null) return true;
		try {
			schema.verify();
			return true;
		} catch (InvalidSchemaException e) {
			return false;
		}
	}
}