Class JsonSchema

  • Direct Known Subclasses:
    HyperSchema, SimpleTypeSchema, UnionTypeSchema

    public abstract class JsonSchema
    extends java.lang.Object
    The type wraps the json schema specification at : Json JsonSchema Draft
    JSON (JavaScript Object Notation) JsonSchema defines the media type "application/schema+json", a JSON based format for defining the structure of JSON data. JSON JsonSchema provides a contract for what JSON data is required for a given application and how to interact with it. JSON JsonSchema is intended to define validation, documentation, hyperlink navigation, and interaction control of JSON data.
    JSON (JavaScript Object Notation) JsonSchema is a JSON media type for defining the structure of JSON data. JSON JsonSchema provides a contract for what JSON data is required for a given application and how to interact with it. JSON JsonSchema is intended to define validation, documentation, hyperlink navigation, and interaction control of JSON data.
    An example JSON JsonSchema provided by the JsonSchema draft:
            {
              "name":"Product",
              "properties":{
                "id":{
                  "type":"number",
                  "description":"Product identifier",
                  "required":true
                },
                "name":{
                  "description":"Name of the product",
                  "type":"string",
                  "required":true
                },
                "price":{
                  "required":true,
                  "type": "number",
                  "minimum":0,
                  "required":true
                },
                "tags":{
                  "type":"array",
                  "items":{
                    "type":"string"
                  }
                }
              },
              "links":[
                {
                  "rel":"full",
                  "href":"{id}"
                },
                {
                  "rel":"comments",
                  "href":"comments/?id={id}"
                }
              ]
            }
     
    • Field Detail

      • id

        private java.lang.String id
        This attribute defines the current URI of this schema (this attribute is effectively a "self" link). This URI MAY be relative or absolute. If the URI is relative it is resolved against the current URI of the parent schema it is contained in. If this schema is not contained in any parent schema, the current URI of the parent schema is held to be the URI under which this schema was addressed. If id is missing, the current URI of a schema is defined to be that of the parent schema. The current URI of the schema is also used to construct relative references such as for $ref.
      • $ref

        private java.lang.String $ref
        This attribute defines a URI of a schema that contains the full representation of this schema. When a validator encounters this attribute, it SHOULD replace the current schema with the schema referenced by the value's URI (if known and available) and re- validate the instance. This URI MAY be relative or absolute, and relative URIs SHOULD be resolved against the URI of the current schema.
      • $schema

        private java.lang.String $schema
        This attribute defines a URI of a JSON JsonSchema that is the schema of the current schema. When this attribute is defined, a validator SHOULD use the schema referenced by the value's URI (if known and available) when resolving Hyper JsonSchema (Section 6) links (Section 6.1). A validator MAY use this attribute's value to determine which version of JSON JsonSchema the current schema is written in, and provide the appropriate validation features and behavior. Therefore, it is RECOMMENDED that all schema authors include this attribute in their schemas to prevent conflicts with future JSON JsonSchema specification changes.
      • disallow

        private JsonSchema[] disallow
        This attribute takes the same values as the "type" attribute, however if the instance matches the type or if this value is an array and the instance matches any type or schema in the array, then this instance is not valid.
      • extendsextends

        private JsonSchema[] extendsextends
        The value of this property MUST be another schema which will provide a base schema which the current schema will inherit from. The inheritance rules are such that any instance that is valid according to the current schema MUST be valid according to the referenced schema. This MAY also be an array, in which case, the instance MUST be valid for all the schemas in the array. A schema that extends another schema MAY define additional attributes, constrain existing attributes, or add other constraints. Conceptually, the behavior of extends can be seen as validating an instance against all constraints in the extending schema as well as the extended schema(s). More optimized implementations that merge schemas are possible, but are not required. An example of using "extends": { "description":"An adult", "properties":{"age":{"minimum": 21}}, "extends":"person" } { "description":"Extended schema", "properties":{"deprecated":{"type": "boolean"}}, "extends":"http://json-schema.org/draft-03/schema" }
      • required

        private java.lang.Boolean required
        This attribute indicates if the instance must have a value, and not be undefined. This is false by default, making the instance optional.
      • readonly

        private java.lang.Boolean readonly
        This attribute indicates if the instance is not modifiable. This is false by default, making the instance modifiable.
      • description

        private java.lang.String description
        This attribute is a string that provides a full description of the of purpose the instance property.
    • Constructor Detail

      • JsonSchema

        protected JsonSchema()
    • Method Detail

      • asAnySchema

        public AnySchema asAnySchema()
        Attempt to return this JsonSchema as an AnySchema
        Returns:
        this as an AnySchema if possible, or null otherwise
      • asArraySchema

        public ArraySchema asArraySchema()
        Attempt to return this JsonSchema as an ArraySchema
        Returns:
        this as an ArraySchema if possible, or null otherwise
      • asBooleanSchema

        public BooleanSchema asBooleanSchema()
        Attempt to return this JsonSchema as a BooleanSchema
        Returns:
        this as a BooleanSchema if possible, or null otherwise
      • asContainerSchema

        @Deprecated
        public ContainerTypeSchema asContainerSchema()
        Deprecated.
        Since 2.7
      • asContainerTypeSchema

        public ContainerTypeSchema asContainerTypeSchema()
        Attempt to return this JsonSchema as a ContainerTypeSchema
        Returns:
        this as an ContainerTypeSchema if possible, or null otherwise
        Since:
        2.7
      • asIntegerSchema

        public IntegerSchema asIntegerSchema()
        Attempt to return this JsonSchema as an IntegerSchema
        Returns:
        this as an IntegerSchema if possible, or null otherwise
      • asNullSchema

        public NullSchema asNullSchema()
        Attempt to return this JsonSchema as a NullSchema
        Returns:
        this as a NullSchema if possible, or null otherwise
      • asNumberSchema

        public NumberSchema asNumberSchema()
        Attempt to return this JsonSchema as a NumberSchema
        Returns:
        this as a NumberSchema if possible, or null otherwise
      • asObjectSchema

        public ObjectSchema asObjectSchema()
        Attempt to return this JsonSchema as an ObjectSchema
        Returns:
        this as an ObjectSchema if possible, or null otherwise
      • asSimpleTypeSchema

        public SimpleTypeSchema asSimpleTypeSchema()
        Attempt to return this JsonSchema as a SimpleTypeSchema
        Returns:
        this as a SimpleTypeSchema if possible, or null otherwise
      • asStringSchema

        public StringSchema asStringSchema()
        Attempt to return this JsonSchema as a StringSchema
        Returns:
        this as a StringSchema if possible, or null otherwise
      • asUnionTypeSchema

        public UnionTypeSchema asUnionTypeSchema()
        Attempt to return this JsonSchema as an UnionTypeSchema
        Returns:
        this as a UnionTypeSchema if possible, or null otherwise
      • asValueSchemaSchema

        @Deprecated
        public ValueTypeSchema asValueSchemaSchema()
        Deprecated.
        Since 2.7
      • asValueTypeSchema

        public ValueTypeSchema asValueTypeSchema()
        Attempt to return this JsonSchema as a ValueTypeSchema
        Returns:
        this as a ValueTypeSchema if possible, or null otherwise
        Since:
        2.7
      • getId

        public java.lang.String getId()
      • get$ref

        public java.lang.String get$ref()
      • get$schema

        public java.lang.String get$schema()
      • getRequired

        public java.lang.Boolean getRequired()
      • getReadonly

        public java.lang.Boolean getReadonly()
      • getDescription

        public java.lang.String getDescription()
      • getType

        public abstract com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes getType()
      • isAnySchema

        public boolean isAnySchema()
        determine if this JsonSchema is an AnySchema.
        Returns:
        true if this JsonSchema is an AnySchema, false otherwise
      • isArraySchema

        public boolean isArraySchema()
        determine if this JsonSchema is an ArraySchema.
        Returns:
        true if this JsonSchema is an ArraySchema, false otherwise
      • isBooleanSchema

        public boolean isBooleanSchema()
        determine if this JsonSchema is an BooleanSchema.
        Returns:
        true if this JsonSchema is an BooleanSchema, false otherwise
      • isContainerTypeSchema

        public boolean isContainerTypeSchema()
        determine if this JsonSchema is an ContainerTypeSchema.
        Returns:
        true if this JsonSchema is an ContainerTypeSchema, false otherwise
      • isIntegerSchema

        public boolean isIntegerSchema()
        determine if this JsonSchema is an IntegerSchema.
        Returns:
        true if this JsonSchema is an IntegerSchema, false otherwise
      • isNullSchema

        public boolean isNullSchema()
        determine if this JsonSchema is an NullSchema.
        Returns:
        true if this JsonSchema is an NullSchema, false otherwise
      • isNumberSchema

        public boolean isNumberSchema()
        determine if this JsonSchema is an NumberSchema.
        Returns:
        true if this JsonSchema is an NumberSchema, false otherwise
      • isObjectSchema

        public boolean isObjectSchema()
        determine if this JsonSchema is an ObjectSchema.
        Returns:
        true if this JsonSchema is an ObjectSchema, false otherwise
      • isSimpleTypeSchema

        public boolean isSimpleTypeSchema()
        determine if this JsonSchema is an SimpleTypeSchema.
        Returns:
        true if this JsonSchema is an SimpleTypeSchema, false otherwise
      • isStringSchema

        public boolean isStringSchema()
        determine if this JsonSchema is an StringSchema.
        Returns:
        true if this JsonSchema is an StringSchema, false otherwise
      • isUnionTypeSchema

        public boolean isUnionTypeSchema()
        determine if this JsonSchema is an UnionTypeSchema.
        Returns:
        true if this JsonSchema is an UnionTypeSchema, false otherwise
      • isValueTypeSchema

        public boolean isValueTypeSchema()
        determine if this JsonSchema is an ValueTypeSchema.
        Returns:
        true if this JsonSchema is an ValueTypeSchema, false otherwise
      • set$ref

        public void set$ref​(java.lang.String $ref)
      • set$schema

        public void set$schema​(java.lang.String $schema)
      • setDisallow

        public void setDisallow​(JsonSchema[] disallow)
      • setExtends

        public void setExtends​(JsonSchema[] extendsextends)
      • setId

        public void setId​(java.lang.String id)
      • setRequired

        public void setRequired​(java.lang.Boolean required)
      • setReadonly

        public void setReadonly​(java.lang.Boolean readonly)
      • setDescription

        public void setDescription​(java.lang.String description)
      • enrichWithBeanProperty

        public void enrichWithBeanProperty​(com.fasterxml.jackson.databind.BeanProperty beanProperty)
        Override this to add information specific to the property of bean For example, bean validation annotations could be used to specify value constraints in the schema
        Parameters:
        beanProperty -
      • minimalForFormat

        public static JsonSchema minimalForFormat​(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes format)
        Create a schema which verifies only that an object is of the given format.
        Parameters:
        format - the format to expect
        Returns:
        the schema verifying the given format
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • _equals

        protected boolean _equals​(JsonSchema that)
      • equals

        protected static boolean equals​(java.lang.Object object1,
                                        java.lang.Object object2)
        A utility method allowing to easily chain calls to equals() on members without taking any risk regarding the ternary operator precedence.
        Returns:
        (object1 == null ? object2 == null : object1.equals(object2))
      • arraysEqual

        protected static <T> boolean arraysEqual​(T[] arr1,
                                                 T[] arr2)