Class Swagger2Module

java.lang.Object
com.github.victools.jsonschema.module.swagger2.Swagger2Module
All Implemented Interfaces:
com.github.victools.jsonschema.generator.Module

public class Swagger2Module extends Object implements com.github.victools.jsonschema.generator.Module
JSON Schema Generator Module - Swagger (2.x).
Since:
4.13.0
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    applyToConfigBuilder(com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder builder)
     
    protected Boolean
    checkNullable(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine whether the given field/method may be null based on @Schema(nullable = true).
    protected boolean
    checkReadOnly(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine whether the given field/method is deemed read-only based on @Schema(accessMode = AccessMode.READ_ONLY).
    protected boolean
    checkRequired(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine whether the given field/method is deemed required in its containing type based on @Schema(required = true).
    protected boolean
    checkWriteOnly(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine whether the given field/method is deemed write-only based on @Schema(accessMode = AccessMode.WRITE_ONLY).
    protected Type
    mapAdditionalPropertiesEnumValue(io.swagger.v3.oas.annotations.media.Schema annotation)
    Derive the allowed type of a schema's additional properties from the given annotation.
    protected void
    overrideInstanceAttributes(tools.jackson.databind.node.ObjectNode memberAttributes, com.github.victools.jsonschema.generator.MemberScope<?,?> member, com.github.victools.jsonschema.generator.SchemaGenerationContext context)
    Consider various remaining aspects.
    protected com.github.victools.jsonschema.generator.CustomPropertyDefinition
    provideCustomSchemaDefinition(com.github.victools.jsonschema.generator.MemberScope<?,?> scope, com.github.victools.jsonschema.generator.SchemaGenerationContext context)
    Implementation of the CustomPropertyDefinitionProvider to consider external references given in @Schema(ref = ...).
    protected Integer
    resolveArrayMaxItems(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine the given field/method's ArraySchema annotation is present and contains a specific maxItems.
    protected Integer
    resolveArrayMinItems(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine the given field/method's ArraySchema annotation is present and contains a specific minItems.
    protected Boolean
    resolveArrayUniqueItems(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine the given field/method's ArraySchema annotation is present and is marked as uniqueItems = true.
    protected String
    resolveDefault(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the default value for the given field/method from @Schema(defaultValue = ...).
    protected String
    resolveDescription(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up description from @Schema(description = ...) for given field/method.
    protected List<String>
    resolveEnum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the finite list of possible values from @Schema(allowableValues = ...).
    protected BigDecimal
    resolveExclusiveMaximum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the exclusive maximum value from @Schema(maximum = ..., exclusiveMaxium = true) for the given field/method.
    protected BigDecimal
    resolveExclusiveMinimum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the exclusive minimum value from @Schema(minimum = ..., exclusiveMinium = true) for the given field/method.
    protected String
    resolveFormat(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the value from @Schema(format = ...) for the given field/method.
    protected BigDecimal
    resolveInclusiveMaximum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the inclusive maximum value from @Schema(maximum = ..., exclusiveMaxium = false) for the given field/method.
    protected BigDecimal
    resolveInclusiveMinimum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the inclusive minimum value from @Schema(minimum = ..., exclusiveMinium = false) for the given field/method.
    protected Integer
    resolveMaxLength(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the value from @Schema(maxLength = ...) for the given field/method.
    protected Integer
    resolveMinLength(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the value from @Schema(minLength = ...) for the given field/method.
    protected BigDecimal
    resolveMultipleOf(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the value from @Schema(multipleOf = ...) for the given field/method.
    protected String
    resolvePattern(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up the value from @Schema(pattern = ...) for the given field/method.
    protected String
    resolvePropertyNameOverride(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine an alternative name for the given field/method, based on @Schema(name = ...).
    protected List<com.fasterxml.classmate.ResolvedType>
    resolveTargetTypeOverrides(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Derive target type override from @Schema(implementation = ...).
    protected String
    resolveTitle(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Look-up title from @Schema(title = ...) for given field/method.
    protected boolean
    shouldBeIgnored(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
    Determine whether the given field/method should be skipped, based on @Schema(hidden = true).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Swagger2Module

      public Swagger2Module()
  • Method Details

    • applyToConfigBuilder

      public void applyToConfigBuilder(com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder builder)
      Specified by:
      applyToConfigBuilder in interface com.github.victools.jsonschema.generator.Module
    • resolveTargetTypeOverrides

      protected List<com.fasterxml.classmate.ResolvedType> resolveTargetTypeOverrides(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Derive target type override from @Schema(implementation = ...).
      Parameters:
      member - field/method to determine target type override for
      Returns:
      single target type override or null
    • shouldBeIgnored

      protected boolean shouldBeIgnored(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine whether the given field/method should be skipped, based on @Schema(hidden = true).
      Parameters:
      member - field/method to check
      Returns:
      whether to skip the field/method
    • resolvePropertyNameOverride

      protected String resolvePropertyNameOverride(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine an alternative name for the given field/method, based on @Schema(name = ...).
      Parameters:
      member - field/method to look-up alternative property name for
      Returns:
      alternative property name
    • resolveDescription

      protected String resolveDescription(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up description from @Schema(description = ...) for given field/method.
      Parameters:
      member - field/method to look-up description for
      Returns:
      schema description
    • resolveTitle

      protected String resolveTitle(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up title from @Schema(title = ...) for given field/method.
      Parameters:
      member - field/method to look-up title for
      Returns:
      schema title
    • checkRequired

      protected boolean checkRequired(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine whether the given field/method is deemed required in its containing type based on @Schema(required = true).
      Parameters:
      member - field/method to check
      Returns:
      whether the field/method is required
    • checkNullable

      protected Boolean checkNullable(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine whether the given field/method may be null based on @Schema(nullable = true).
      Parameters:
      member - field/method to check
      Returns:
      whether the field/method is nullable
    • mapAdditionalPropertiesEnumValue

      protected Type mapAdditionalPropertiesEnumValue(io.swagger.v3.oas.annotations.media.Schema annotation)
      Derive the allowed type of a schema's additional properties from the given annotation.
      Parameters:
      annotation - annotation to check
      Returns:
      Object.class (if true or an external "$ref" is specified), Void.class (if forbidden) or null (if undefined)
    • checkReadOnly

      protected boolean checkReadOnly(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine whether the given field/method is deemed read-only based on @Schema(accessMode = AccessMode.READ_ONLY).
      Parameters:
      member - field/method to check
      Returns:
      whether the field/method is read-only
    • checkWriteOnly

      protected boolean checkWriteOnly(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine whether the given field/method is deemed write-only based on @Schema(accessMode = AccessMode.WRITE_ONLY).
      Parameters:
      member - field/method to check
      Returns:
      whether the field/method is write-only
    • resolveEnum

      protected List<String> resolveEnum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the finite list of possible values from @Schema(allowableValues = ...).
      Parameters:
      member - field/method to determine allowed values for
      Returns:
      applicable "const"/"enum" values or null
    • resolveDefault

      protected String resolveDefault(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the default value for the given field/method from @Schema(defaultValue = ...).
      Parameters:
      member - field/method to determine default value for
      Returns:
      default property value or null
    • resolveMinLength

      protected Integer resolveMinLength(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the value from @Schema(minLength = ...) for the given field/method.
      Parameters:
      member - field/method to look-up minimum string length for
      Returns:
      minimum string length or null
    • resolveMaxLength

      protected Integer resolveMaxLength(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the value from @Schema(maxLength = ...) for the given field/method.
      Parameters:
      member - field/method to look-up maximum string length for
      Returns:
      maximum string length or null
    • resolveFormat

      protected String resolveFormat(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the value from @Schema(format = ...) for the given field/method.
      Parameters:
      member - field/method to look-up format for
      Returns:
      format value or null
    • resolvePattern

      protected String resolvePattern(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the value from @Schema(pattern = ...) for the given field/method.
      Parameters:
      member - field/method to look-up pattern for
      Returns:
      pattern value or null
    • resolveMultipleOf

      protected BigDecimal resolveMultipleOf(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the value from @Schema(multipleOf = ...) for the given field/method.
      Parameters:
      member - field/method to look-up multipleOf for
      Returns:
      multipleOf value or null
    • resolveExclusiveMaximum

      protected BigDecimal resolveExclusiveMaximum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the exclusive maximum value from @Schema(maximum = ..., exclusiveMaxium = true) for the given field/method.
      Parameters:
      member - field/method to look-up exclusiveMaximum for
      Returns:
      exclusiveMaximum value or null
    • resolveInclusiveMaximum

      protected BigDecimal resolveInclusiveMaximum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the inclusive maximum value from @Schema(maximum = ..., exclusiveMaxium = false) for the given field/method.
      Parameters:
      member - field/method to look-up maximum for
      Returns:
      maximum value or null
    • resolveExclusiveMinimum

      protected BigDecimal resolveExclusiveMinimum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the exclusive minimum value from @Schema(minimum = ..., exclusiveMinium = true) for the given field/method.
      Parameters:
      member - field/method to look-up exclusiveMinimum for
      Returns:
      exclusiveMinimum value or null
    • resolveInclusiveMinimum

      protected BigDecimal resolveInclusiveMinimum(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Look-up the inclusive minimum value from @Schema(minimum = ..., exclusiveMinium = false) for the given field/method.
      Parameters:
      member - field/method to look-up minimum for
      Returns:
      minimum value or null
    • resolveArrayMinItems

      protected Integer resolveArrayMinItems(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine the given field/method's ArraySchema annotation is present and contains a specific minItems.
      Parameters:
      member - potentially annotated field/method
      Returns:
      the @ArraySchema(minItems) value, otherwise null
    • resolveArrayMaxItems

      protected Integer resolveArrayMaxItems(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine the given field/method's ArraySchema annotation is present and contains a specific maxItems.
      Parameters:
      member - potentially annotated field/method
      Returns:
      the @ArraySchema(maxItems) value, otherwise null
    • resolveArrayUniqueItems

      protected Boolean resolveArrayUniqueItems(com.github.victools.jsonschema.generator.MemberScope<?,?> member)
      Determine the given field/method's ArraySchema annotation is present and is marked as uniqueItems = true.
      Parameters:
      member - potentially annotated field/method
      Returns:
      whether @ArraySchema(uniqueItems = true) is present
    • provideCustomSchemaDefinition

      protected com.github.victools.jsonschema.generator.CustomPropertyDefinition provideCustomSchemaDefinition(com.github.victools.jsonschema.generator.MemberScope<?,?> scope, com.github.victools.jsonschema.generator.SchemaGenerationContext context)
      Implementation of the CustomPropertyDefinitionProvider to consider external references given in @Schema(ref = ...).
      Parameters:
      scope - field/method to determine custom definition for
      context - generation context
      Returns:
      custom definition containing the looked-up external reference or null
    • overrideInstanceAttributes

      protected void overrideInstanceAttributes(tools.jackson.databind.node.ObjectNode memberAttributes, com.github.victools.jsonschema.generator.MemberScope<?,?> member, com.github.victools.jsonschema.generator.SchemaGenerationContext context)
      Consider various remaining aspects.
      • @Schema(not = ...)
      • @Schema(allOf = ...)
      • @Schema(minProperties = ...)
      • @Schema(maxProperties = ...)
      • @Schema(requiredProperties = ...)
      Parameters:
      memberAttributes - already collected schema for the field/method
      member - targeted field/method
      context - generation context