Class JsonSchema
java.lang.Object
com.inductiveautomation.ignition.common.jsonschema.BaseJsonValidator
com.inductiveautomation.ignition.common.jsonschema.JsonSchema
- All Implemented Interfaces:
JsonValidator
This is the core of json constraint implementation. It parses json constraint
file and generates JsonValidators. The class is thread safe, once it is
constructed, it can be used to validate multiple json data concurrently.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Pattern
static final String
protected Map<String,
JsonValidator> Fields inherited from interface com.inductiveautomation.ignition.common.jsonschema.JsonValidator
AT_ROOT
-
Constructor Summary
ConstructorsConstructorDescriptionJsonSchema
(com.inductiveautomation.ignition.common.gson.JsonElement schemaNode) JsonSchema
(com.inductiveautomation.ignition.common.gson.JsonElement schemaNode, JsonSchema subSchema) -
Method Summary
Modifier and TypeMethodDescriptionboolean
acceptsType
(JsonType type) Returns true if this schema accepts this typefindAncestorMatchingPath
(String matchingPath) findSchemaForPath
(JsonPath path) Attempts to find a sub-schema for a specific json path into a hypothetical document that this schema might validate.Optional<com.inductiveautomation.ignition.common.gson.JsonElement>
getChildDefaultValue
(JsonType type) com.inductiveautomation.ignition.common.gson.JsonElement
If the schema specified a default value, it will be returned here.com.inductiveautomation.ignition.common.gson.JsonElement
getDefaultValue
(boolean includeExamples) If the schema specified a default value, it will be returned here.List<com.inductiveautomation.ignition.common.gson.JsonElement>
Optional<com.inductiveautomation.ignition.common.gson.JsonElement>
Returns an optional containing an example value if one exists.Optional<com.inductiveautomation.ignition.common.gson.JsonElement>
getExtension
(String key) Returns the json data attached under this schema's "extension" validator, if any.Finds the ItemsValidator associated with this schema, if there is one.com.inductiveautomation.ignition.common.gson.JsonElement
getRefSchemaNode
(String ref) Find the schema node for $ref attribute.getTitle()
Finds the TypeValidator associated with this schema, if there is one.Optional<org.apache.commons.lang3.tuple.Pair<String,
List<com.inductiveautomation.ignition.common.gson.JsonElement>>> boolean
boolean
boolean
Returns true if this schema accepts this type and only this typestatic JsonSchema
parse
(InputStream stream) toString()
validate
(com.inductiveautomation.ignition.common.gson.JsonElement jsonElement, com.inductiveautomation.ignition.common.gson.JsonElement rootNode, String at) Validate the given JsonElement, the given node is the child node of the root node at given data path.Methods inherited from class com.inductiveautomation.ignition.common.jsonschema.BaseJsonValidator
asInt, buildValidationMessage, debug, equals, getParentSchema, getSchemaNode, getSchemaPath, getSubSchema, getValidatorType, greaterThan, hasSubSchema, lessThan, obtainSubSchemaNode, parseErrorCode, useRefCache, validate
-
Field Details
-
validators
-
IGNITION_SCHEMA_URN
- See Also:
-
IGNITION_SCHEMA_PATTERN
-
-
Constructor Details
-
JsonSchema
public JsonSchema(com.inductiveautomation.ignition.common.gson.JsonElement schemaNode) -
JsonSchema
public JsonSchema(com.inductiveautomation.ignition.common.gson.JsonElement schemaNode, JsonSchema subSchema)
-
-
Method Details
-
parse
-
findSchemaForPath
Attempts to find a sub-schema for a specific json path into a hypothetical document that this schema might validate. Only supports finding sub-schemas inside "properties" and "items" keywords. -
getRefSchemaNode
Find the schema node for $ref attribute.- Parameters:
ref
- String- Returns:
- JsonElement
-
findAncestorMatchingPath
-
findAncestor
-
validate
public Set<ValidationMessage> validate(com.inductiveautomation.ignition.common.gson.JsonElement jsonElement, com.inductiveautomation.ignition.common.gson.JsonElement rootNode, String at) Description copied from interface:JsonValidator
Validate the given JsonElement, the given node is the child node of the root node at given data path.- Parameters:
jsonElement
- JsonElementrootNode
- JsonElementat
- String- Returns:
- A list of ValidationMessage if there is any validation error, or an empty list if there is no error.
-
getTitle
-
getDescription
-
getDefaultValue
@Nullable public com.inductiveautomation.ignition.common.gson.JsonElement getDefaultValue()If the schema specified a default value, it will be returned here. Otherwise, a default value may be derived based on the sub-properties specified. -
getDefaultValue
@Nullable public com.inductiveautomation.ignition.common.gson.JsonElement getDefaultValue(boolean includeExamples) If the schema specified a default value, it will be returned here. Otherwise, a default value may be derived based on the sub-properties specified. -
getChildDefaultValue
-
getExamples
-
isDeprecated
public boolean isDeprecated() -
getExampleValue
@Nonnull public Optional<com.inductiveautomation.ignition.common.gson.JsonElement> getExampleValue()Returns an optional containing an example value if one exists. -
getFormat
- Returns:
- The format specifier for this schema, if there is one, null otherwise. There will also be a format validator added to the schema.
-
getExtension
@Nonnull public Optional<com.inductiveautomation.ignition.common.gson.JsonElement> getExtension(String key) Returns the json data attached under this schema's "extension" validator, if any. -
getTypeValidator
Finds the TypeValidator associated with this schema, if there is one. This can be useful if you want to know the accepted types for this schema. -
getItemsValidator
Finds the ItemsValidator associated with this schema, if there is one. The items validator defines an expected shape for each element in a (potentially) arbitrary length sequence. -
isType
Returns true if this schema accepts this type and only this type -
acceptsType
Returns true if this schema accepts this type -
getEnumChoices
- Returns:
- The map of possible choices for this schema if an `enum` validator is present. Otherwise, empty map.
-
getSuggestions
- Returns:
- the map of suggested values if a 'suggestions' validator is present, otherwise returns empty map.
-
getDynamicSuggestionPath
-
getVisibleWhenCondition
public Optional<org.apache.commons.lang3.tuple.Pair<String,List<com.inductiveautomation.ignition.common.gson.JsonElement>>> getVisibleWhenCondition()- Returns:
- pair key: driving property name. pair value: acceptable values that make this node visible
-
getDeclaredProperties
- Returns:
- a list of declared property names declared in a "properties" validator in this schema, or empty list if none.
-
getSchemasForProperties
- Returns:
- a map of declared property names and their individual schemas, or an empty map if this schema does not define properties.
-
getSchemasForItems
- Returns:
- an ordered list of item validators. If a singleton list, pull the
getItemsValidator()
, and then checkItemsValidator
viaItemsValidator.isBoundedSchema()
to see whether this schema applies to each element in an arbitrarily-long sequence, or only allows a finite list.
-
hasChildren
public boolean hasChildren() -
toString
-