From 01ce3c3c794ffa69669aba37dbec044232469435 Mon Sep 17 00:00:00 2001 From: irengrig Date: Mon, 20 Feb 2017 20:55:52 +0100 Subject: [PATCH] webpack config support: also recognize variables called webPack and think that an object literal in initializer (even in constructs like merge(inherited, {})) is config --- .../impl/JsonBySchemaObjectAnnotator.java | 55 ++++++++++--------- .../jsonSchema/impl/JsonValueAdapter.java | 2 + 2 files changed, 31 insertions(+), 26 deletions(-) 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;} }