Class SchemaGeneratorConfigImpl

    • Constructor Detail

      • SchemaGeneratorConfigImpl

        public SchemaGeneratorConfigImpl​(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                                         Set<Option> enabledOptions,
                                         SchemaGeneratorTypeConfigPart<TypeScope> typesInGeneralConfigPart,
                                         SchemaGeneratorConfigPart<FieldScope> fieldConfigPart,
                                         SchemaGeneratorConfigPart<MethodScope> methodConfigPart,
                                         List<CustomDefinitionProviderV2> customDefinitions,
                                         List<TypeAttributeOverride> typeAttributeOverrides)
        Constructor of a configuration instance.
        Parameters:
        objectMapper - supplier for object and array nodes for the JSON structure being generated
        enabledOptions - enabled settings/options (either by default or explicitly set)
        typesInGeneralConfigPart - configuration part for context-independent attribute collection
        fieldConfigPart - configuration part for fields
        methodConfigPart - configuration part for methods
        customDefinitions - custom suppliers for a type's schema definition
        typeAttributeOverrides - applicable type attribute overrides
    • Method Detail

      • shouldCreateDefinitionsForAllObjects

        public boolean shouldCreateDefinitionsForAllObjects()
        Description copied from interface: SchemaGeneratorConfig
        Determine whether all referenced objects should be listed in the schema's "definitions", even if they only occur once.
        Specified by:
        shouldCreateDefinitionsForAllObjects in interface SchemaGeneratorConfig
        Returns:
        whether to add a definition even for objects occurring only once
      • getObjectMapper

        public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
        Description copied from interface: SchemaGeneratorConfig
        Getter for the underlying object mapper.
        Specified by:
        getObjectMapper in interface SchemaGeneratorConfig
        Returns:
        object mapper being used for generating JSON Schema structure
      • createObjectNode

        public com.fasterxml.jackson.databind.node.ObjectNode createObjectNode()
        Description copied from interface: SchemaGeneratorConfig
        Generate an empty JSON node representing an object (which will subsequently be filled by the generator).
        This is equivalent to calling getObjectMapper().createObjectNode()
        Specified by:
        createObjectNode in interface SchemaGeneratorConfig
        Returns:
        JSON object node
      • createArrayNode

        public com.fasterxml.jackson.databind.node.ArrayNode createArrayNode()
        Description copied from interface: SchemaGeneratorConfig
        Generate an empty JSON node representing an array (which will subsequently be filled by the generator).
        This is equivalent to calling getObjectMapper().createArrayNode()
        Specified by:
        createArrayNode in interface SchemaGeneratorConfig
        Returns:
        JSON array node
      • getCustomDefinition

        public CustomDefinition getCustomDefinition​(com.fasterxml.classmate.ResolvedType javaType,
                                                    SchemaGenerationContext context,
                                                    CustomDefinitionProviderV2 ignoredDefinitionProvider)
        Description copied from interface: SchemaGeneratorConfig
        Look-up the non-standard JSON schema definition for a given type. If this returns null, the standard behaviour is expected to be applied.
        Specified by:
        getCustomDefinition in interface SchemaGeneratorConfig
        Parameters:
        javaType - generic type to provide custom definition for
        context - generation context allowing to let the standard generation take over nested parts of the custom definition
        ignoredDefinitionProvider - custom definition provider to ignore
        Returns:
        non-standard JSON schema definition (may be null)
      • isNullable

        public boolean isNullable​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Check whether a field/property is nullable.
        Specified by:
        isNullable in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to check
        Returns:
        whether the field/property is nullable
      • isNullable

        public boolean isNullable​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Check whether a method's return value is nullable.
        Specified by:
        isNullable in interface SchemaGeneratorConfig
        Parameters:
        method - method to check
        Returns:
        whether the method's return value is nullable
      • shouldIgnore

        public boolean shouldIgnore​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Check whether a field/property should be ignored.
        Specified by:
        shouldIgnore in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to check
        Returns:
        whether the field/property should be ignored
      • isRequired

        public boolean isRequired​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Check whether a field/property value is required.
        Specified by:
        isRequired in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to check
        Returns:
        whether the field/property value should be required
      • isRequired

        public boolean isRequired​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Check whether a method value is required.
        Specified by:
        isRequired in interface SchemaGeneratorConfig
        Parameters:
        method - method to check
        Returns:
        whether the method value should be required
      • resolveTargetTypeOverride

        public com.fasterxml.classmate.ResolvedType resolveTargetTypeOverride​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the alternative target type from an object's field/property.
        Specified by:
        resolveTargetTypeOverride in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine the target type for
        Returns:
        target type (may be null)
      • resolveTargetTypeOverride

        public com.fasterxml.classmate.ResolvedType resolveTargetTypeOverride​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the alternative target type from a method's return value.
        Specified by:
        resolveTargetTypeOverride in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine the target type for
        Returns:
        target type (may be null)
      • resolvePropertyNameOverride

        public String resolvePropertyNameOverride​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the alternative name in a parent JSON Schema's "properties" from an object's field/property.
        Specified by:
        resolvePropertyNameOverride in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine name in parent JSON Schema's properties for
        Returns:
        name in a parent JSON Schema's "properties" (may be null, thereby falling back on the default value)
      • resolvePropertyNameOverride

        public String resolvePropertyNameOverride​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the alternative name in a parent JSON Schema's "properties" from a method's return value.
        Specified by:
        resolvePropertyNameOverride in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine name in parent JSON Schema's properties for
        Returns:
        name in a parent JSON Schema's "properties" (may be null, thereby falling back on the default value)
      • resolveTitle

        public String resolveTitle​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "title" of an object's field/property.
        Specified by:
        resolveTitle in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "title" value for
        Returns:
        "title" in a JSON Schema (may be null)
      • resolveTitle

        public String resolveTitle​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "title" of a method's return value.
        Specified by:
        resolveTitle in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "title" value for
        Returns:
        "title" in a JSON Schema (may be null)
      • resolveTitleForType

        public String resolveTitleForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "title" of a context-independent type representation.
        Specified by:
        resolveTitleForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "title" value for
        Returns:
        "title" in a JSON Schema (may be null)
      • resolveDescription

        public String resolveDescription​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "description" of an object's field/property.
        Specified by:
        resolveDescription in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "description" value for
        Returns:
        "description" in a JSON Schema (may be null)
      • resolveDescription

        public String resolveDescription​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "description" of a method's return value.
        Specified by:
        resolveDescription in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "description" value for
        Returns:
        "description" in a JSON Schema (may be null)
      • resolveDescriptionForType

        public String resolveDescriptionForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "description" of a context-independent type representation.
        Specified by:
        resolveDescriptionForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "description" value for
        Returns:
        "description" in a JSON Schema (may be null)
      • resolveDefault

        public Object resolveDefault​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "default" value of an object's field/property.
        Specified by:
        resolveDefault in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "default" value for
        Returns:
        "default" in a JSON Schema (may be null)
      • resolveDefault

        public Object resolveDefault​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "default" value of a method's return value.
        Specified by:
        resolveDefault in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "default" value for
        Returns:
        "default" in a JSON Schema (may be null)
      • resolveDefaultForType

        public Object resolveDefaultForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "default" value of a context-independent type representation.
        Specified by:
        resolveDefaultForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "default" value for
        Returns:
        "default" in a JSON Schema (may be null)
      • resolveEnum

        public Collection<?> resolveEnum​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "enum"/"const" of an object's field/property.
        Specified by:
        resolveEnum in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "enum"/"const" value for
        Returns:
        "enum"/"const" in a JSON Schema (may be null)
      • resolveEnum

        public Collection<?> resolveEnum​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "enum"/"const" of a method's return value.
        Specified by:
        resolveEnum in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "enum"/"const" value for
        Returns:
        "enum"/"const" in a JSON Schema (may be null)
      • resolveEnumForType

        public Collection<?> resolveEnumForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "enum"/"const" of a context-independent type representation.
        Specified by:
        resolveEnumForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "enum"/"const" value for
        Returns:
        "enum"/"const" in a JSON Schema (may be null)
      • resolveAdditionalProperties

        public Type resolveAdditionalProperties​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "additionalProperties" of an object's field/property.
        Specified by:
        resolveAdditionalProperties in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "additionalProperties" value for
        Returns:
        "additionalProperties" in a JSON Schema (may be Void) to indicate no additional properties being allowed or may be null)
      • resolveAdditionalProperties

        public Type resolveAdditionalProperties​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "additionalProperties" of a method's return value.
        Specified by:
        resolveAdditionalProperties in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "additionalProperties" value for
        Returns:
        "additionalProperties" in a JSON Schema (may be Void) to indicate no additional properties being allowed or may be null)
      • resolveAdditionalPropertiesForType

        public Type resolveAdditionalPropertiesForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "additionalProperties" of a context-independent type representation.
        Specified by:
        resolveAdditionalPropertiesForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "additionalProperties" value for
        Returns:
        "additionalProperties" in a JSON Schema (may be Void) to indicate no additional properties being allowed or may be null)
      • resolvePatternProperties

        public Map<String,​Type> resolvePatternProperties​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "patternProperties" of an object's field/property.
        Specified by:
        resolvePatternProperties in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "patternProperties" value for
        Returns:
        "patternProperties" in a JSON Schema (may be null), the keys representing the patterns and the mapped values their corresponding types
      • resolvePatternProperties

        public Map<String,​Type> resolvePatternProperties​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "patternProperties" of a method's return value.
        Specified by:
        resolvePatternProperties in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "patternProperties" value for
        Returns:
        "patternProperties" in a JSON Schema (may be null), the keys representing the patterns and the mapped values their corresponding types
      • resolvePatternPropertiesForType

        public Map<String,​Type> resolvePatternPropertiesForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "patternProperties" of a context-independent type representation.
        Specified by:
        resolvePatternPropertiesForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "patternProperties" value for
        Returns:
        "patternProperties" in a JSON Schema (may be null), the keys representing the patterns and the mapped values their corresponding types
      • resolveStringMinLength

        public Integer resolveStringMinLength​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "minLength" of an object's field/property.
        Specified by:
        resolveStringMinLength in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "minLength" value for
        Returns:
        "minLength" in a JSON Schema (may be null)
      • resolveStringMinLength

        public Integer resolveStringMinLength​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "minLength" of a method's return value.
        Specified by:
        resolveStringMinLength in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "minLength" value for
        Returns:
        "minLength" in a JSON Schema (may be null)
      • resolveStringMinLengthForType

        public Integer resolveStringMinLengthForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "minLength" of a context-independent type representation.
        Specified by:
        resolveStringMinLengthForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "minLength" value for
        Returns:
        "minLength" in a JSON Schema (may be null)
      • resolveStringMaxLength

        public Integer resolveStringMaxLength​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "maxLength" of an object's field/property.
        Specified by:
        resolveStringMaxLength in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "maxLength" value for
        Returns:
        "maxLength" in a JSON Schema (may be null)
      • resolveStringMaxLength

        public Integer resolveStringMaxLength​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "maxLength" of a method's return value.
        Specified by:
        resolveStringMaxLength in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "maxLength" value for
        Returns:
        "maxLength" in a JSON Schema (may be null)
      • resolveStringMaxLengthForType

        public Integer resolveStringMaxLengthForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "maxLength" of a context-independent type representation.
        Specified by:
        resolveStringMaxLengthForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "maxLength" value for
        Returns:
        "maxLength" in a JSON Schema (may be null)
      • resolveStringFormat

        public String resolveStringFormat​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "format" of an object's field/property.
        Specified by:
        resolveStringFormat in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "format" value for
        Returns:
        "format" in a JSON Schema (may be null)
      • resolveStringFormat

        public String resolveStringFormat​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "format" of a method's return value.
        Specified by:
        resolveStringFormat in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "format" value for
        Returns:
        "format" in a JSON Schema (may be null)
      • resolveStringFormatForType

        public String resolveStringFormatForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "format" of a context-independent type representation.
        Specified by:
        resolveStringFormatForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "format" value for
        Returns:
        "format" in a JSON Schema (may be null)
      • resolveStringPattern

        public String resolveStringPattern​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "pattern" of an object's field/property.
        Specified by:
        resolveStringPattern in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "pattern" value for
        Returns:
        "pattern" in a JSON Schema (may be null)
      • resolveStringPattern

        public String resolveStringPattern​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "pattern" of a method's return value.
        Specified by:
        resolveStringPattern in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "pattern" value for
        Returns:
        "pattern" in a JSON Schema (may be null)
      • resolveStringPatternForType

        public String resolveStringPatternForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "pattern" of a context-independent type representation.
        Specified by:
        resolveStringPatternForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "pattern" value for
        Returns:
        "pattern" in a JSON Schema (may be null)
      • resolveNumberExclusiveMinimumForType

        public BigDecimal resolveNumberExclusiveMinimumForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "exclusiveMinimum" of a context-independent type representation.
        Specified by:
        resolveNumberExclusiveMinimumForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "exclusiveMinimum" value for
        Returns:
        "exclusiveMinimum" in a JSON Schema (may be null)
      • resolveNumberExclusiveMaximumForType

        public BigDecimal resolveNumberExclusiveMaximumForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "exclusiveMaximum" of a context-independent type representation.
        Specified by:
        resolveNumberExclusiveMaximumForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "exclusiveMaximum" value for
        Returns:
        "exclusiveMaximum" in a JSON Schema (may be null)
      • resolveNumberMultipleOfForType

        public BigDecimal resolveNumberMultipleOfForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "multipleOf" of a context-independent type representation.
        Specified by:
        resolveNumberMultipleOfForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "multipleOf" value for
        Returns:
        "multipleOf" in a JSON Schema (may be null)
      • resolveArrayMinItems

        public Integer resolveArrayMinItems​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "minItems" of an object's field/property.
        Specified by:
        resolveArrayMinItems in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "minItems" value for
        Returns:
        "minItems" in a JSON Schema (may be null)
      • resolveArrayMinItems

        public Integer resolveArrayMinItems​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "minItems" of a method's return value.
        Specified by:
        resolveArrayMinItems in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "minItems" value for
        Returns:
        "minItems" in a JSON Schema (may be null)
      • resolveArrayMinItemsForType

        public Integer resolveArrayMinItemsForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "minItems" of a context-independent type representation.
        Specified by:
        resolveArrayMinItemsForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "minItems" value for
        Returns:
        "minItems" in a JSON Schema (may be null)
      • resolveArrayMaxItems

        public Integer resolveArrayMaxItems​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "maxItems" of an object's field/property.
        Specified by:
        resolveArrayMaxItems in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "maxItems" value for
        Returns:
        "maxItems" in a JSON Schema (may be null)
      • resolveArrayMaxItems

        public Integer resolveArrayMaxItems​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "maxItems" of a method's return value.
        Specified by:
        resolveArrayMaxItems in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "maxItems" value for
        Returns:
        "maxItems" in a JSON Schema (may be null)
      • resolveArrayMaxItemsForType

        public Integer resolveArrayMaxItemsForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "maxItems" of a context-independent type representation.
        Specified by:
        resolveArrayMaxItemsForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "maxItems" value for
        Returns:
        "maxItems" in a JSON Schema (may be null)
      • resolveArrayUniqueItems

        public Boolean resolveArrayUniqueItems​(FieldScope field)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "uniqueItems" of an object's field/property.
        Specified by:
        resolveArrayUniqueItems in interface SchemaGeneratorConfig
        Parameters:
        field - object's field/property to determine "uniqueItems" value for
        Returns:
        "uniqueItems" in a JSON Schema (may be null)
      • resolveArrayUniqueItems

        public Boolean resolveArrayUniqueItems​(MethodScope method)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "uniqueItems" of a method's return value.
        Specified by:
        resolveArrayUniqueItems in interface SchemaGeneratorConfig
        Parameters:
        method - method for whose return value to determine "uniqueItems" value for
        Returns:
        "uniqueItems" in a JSON Schema (may be null)
      • resolveArrayUniqueItemsForType

        public Boolean resolveArrayUniqueItemsForType​(TypeScope scope)
        Description copied from interface: SchemaGeneratorConfig
        Determine the "uniqueItems" of a context-independent type representation.
        Specified by:
        resolveArrayUniqueItemsForType in interface SchemaGeneratorConfig
        Parameters:
        scope - context-independent type representation to determine "uniqueItems" value for
        Returns:
        "uniqueItems" in a JSON Schema (may be null)