diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java index 55163b8329f8..ec1ea6798856 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java @@ -254,38 +254,41 @@ class JsonBySchemaObjectAnnotator implements Annotator { validatedProperties.add(property.getName()); } - final List required = schema.getRequired(); - if (required != null) { - for (String req : required) { - if (!set.contains(req)) { - error("Missing required property '" + req +"'", value.getDelegate()); + if (object.shouldCheckIntegralRequirements()) { + final List required = schema.getRequired(); + if (required != null) { + for (String req : required) { + if (!set.contains(req)) { + error("Missing required property '" + req + "'", value.getDelegate()); + } } } - } - if (schema.getMinProperties() != null && propertyList.size() < schema.getMinProperties()) { - error("Number of properties is less than " + schema.getMinProperties(), value.getDelegate()); - } - if (schema.getMaxProperties() != null && propertyList.size() > schema.getMaxProperties()) { - error("Number of properties is greater than " + schema.getMaxProperties(), value.getDelegate()); - } - final Map> dependencies = schema.getPropertyDependencies(); - if (dependencies != null) { - for (Map.Entry> entry : dependencies.entrySet()) { - if (set.contains(entry.getKey())) { - final List list = entry.getValue(); - for (String s : list) { - if (!set.contains(s)) { - error("Dependency is violated: '" + s + "' must be specified, since '" + entry.getKey() + "' is specified", value.getDelegate()); + if (schema.getMinProperties() != null && propertyList.size() < schema.getMinProperties()) { + error("Number of properties is less than " + schema.getMinProperties(), value.getDelegate()); + } + if (schema.getMaxProperties() != null && propertyList.size() > schema.getMaxProperties()) { + error("Number of properties is greater than " + schema.getMaxProperties(), value.getDelegate()); + } + final Map> dependencies = schema.getPropertyDependencies(); + if (dependencies != null) { + for (Map.Entry> entry : dependencies.entrySet()) { + if (set.contains(entry.getKey())) { + final List list = entry.getValue(); + for (String s : list) { + if (!set.contains(s)) { + error("Dependency is violated: '" + s + "' must be specified, since '" + entry.getKey() + "' is specified", + value.getDelegate()); + } } } } } - } - final Map schemaDependencies = schema.getSchemaDependencies(); - if (schemaDependencies != null) { - for (Map.Entry entry : schemaDependencies.entrySet()) { - if (set.contains(entry.getKey())) { - checkByScheme(value, entry.getValue(), new HashSet<>()); + final Map schemaDependencies = schema.getSchemaDependencies(); + if (schemaDependencies != null) { + for (Map.Entry entry : schemaDependencies.entrySet()) { + if (set.contains(entry.getKey())) { + checkByScheme(value, entry.getValue(), new HashSet<>()); + } } } } diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonValueAdapter.java b/json/src/com/jetbrains/jsonSchema/impl/JsonValueAdapter.java index 6ab04e9a18af..13b9cec9aff2 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonValueAdapter.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonValueAdapter.java @@ -34,4 +34,6 @@ public interface JsonValueAdapter { @Nullable JsonObjectValueAdapter getAsObject(); @Nullable JsonArrayValueAdapter getAsArray(); + + default boolean shouldCheckIntegralRequirements() {return true;} }