package com.jetdrone.vertx.yoke.json; public final class IntegerValidator { public static boolean isValid(Object instance, JsonSchemaResolver.Schema schema) { if (!isInteger(instance)) { return false; } // apply default value if (instance == null) { instance = schema.get("default"); } final Integer number = (Integer) instance; if (number != null) { // validate divisibleBy final Integer divisibleBy = schema.get("divisibleBy"); if (divisibleBy != null && number % divisibleBy != 0) { return false; } // validate minimum final Integer minimum = schema.get("minimum"); if (minimum != null) { if (Boolean.TRUE.equals(schema.get("exclusiveMinimum")) ? (number <= minimum) : (number < minimum)) { return false; } } // validate maximum final Integer maximum = schema.get("maximum"); if (maximum != null) { if (Boolean.TRUE.equals(schema.get("exclusiveMaximum")) ? (maximum <= number) : (maximum < number)) { return false; } } } return true; } private static boolean isInteger(Object value) { return value == null || value instanceof Integer; } }