void (PsiElement propValue, JsonSchemaObject schema, JsonSchemaType schemaType, JsonValidationHost consumer) { Number value; String valueText = JsonSchemaAnnotatorChecker.getValue(propValue, schema); if (valueText == null) return; if (JsonSchemaType._integer.equals(schemaType)) { value = JsonSchemaType.getIntegerValue(valueText); if (value == null) { consumer.error(JsonBundle.message("schema.validation.integer.expected"), propValue, JsonValidationError.FixableIssueKind.TypeMismatch, new JsonValidationError.TypeMismatchIssueData(new JsonSchemaType[]{schemaType}), JsonErrorPriority.TYPE_MISMATCH); return; } } else { try { value = Double.valueOf(valueText); } catch (NumberFormatException e) { if (!JsonSchemaType._string_number.equals(schemaType)) { consumer.error(JsonBundle.message("schema.validation.number.expected"), propValue, JsonValidationError.FixableIssueKind.TypeMismatch, new JsonValidationError.TypeMismatchIssueData(new JsonSchemaType[]{schemaType}), JsonErrorPriority.TYPE_MISMATCH); } return; } } final Number multipleOf = schema.getMultipleOf(); if (multipleOf != null) { final double leftOver = value.doubleValue() % multipleOf.doubleValue(); if (leftOver > 0.000001) { final String multipleOfValue = String.valueOf(Math.abs(multipleOf.doubleValue() - multipleOf.intValue()) < 0.000001 ? multipleOf.intValue() : multipleOf); consumer.error(JsonBundle.message("schema.validation.not.multiple.of", multipleOfValue), propValue, JsonErrorPriority.LOW_PRIORITY); return; } } checkMinimum(schema, value, propValue, consumer); checkMaximum(schema, value, propValue, consumer); }