All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.victools.jsonschema.generator.SchemaGeneratorConfig Maven / Gradle / Ivy

Go to download

Java JSON Schema Generator – creating a JSON Schema (Draft 6, Draft 7 or Draft 2019-09) from your Java classes

There is a newer version: 4.37.0
Show newest version
/*
 * Copyright 2019 VicTools.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.github.victools.jsonschema.generator;

import com.fasterxml.classmate.AnnotationInclusion;
import com.fasterxml.classmate.ResolvedType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.victools.jsonschema.generator.naming.SchemaDefinitionNamingStrategy;
import java.lang.annotation.Annotation;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * Default implementation of a schema generator's configuration.
 */
public interface SchemaGeneratorConfig extends StatefulConfig {

    /**
     * Getter for the designated JSON Schema version.
     *
     * @return target version of the JSON Schema to generate
     */
    SchemaVersion getSchemaVersion();

    /**
     * Getter for the indicated keyword's value in the designated JSON Schema version.
     *
     * @param keyword reference to a tag name or value
     * @return referenced tag name/value in the designated schema version
     * @see #getSchemaVersion()
     * @see SchemaKeyword#forVersion(SchemaVersion)
     */
    String getKeyword(SchemaKeyword keyword);

    /**
     * Determine whether all referenced objects should be listed in the schema's "definitions"/"$defs", even if they only occur once.
     *
     * @return whether to add a definition even for objects occurring only once
     */
    boolean shouldCreateDefinitionsForAllObjects();

    /**
     * Determine whether the schema for the target/main type should be included alongside any "definitions"/"$defs" and be referenced via
     * {@code "$ref": "#"} if necessary. Otherwise, it may be moved into the "definitions"/"$defs" like any other subschema.
     *
     * @return whether to allow "$ref"-erences to the empty fragment "#"
     */
    boolean shouldCreateDefinitionForMainSchema();

    /**
     * Determine whether a member (field/method), having a declared type for which subtypes are being detected, should be merely a collection of its
     * subtype schemas – each being treated like the member had declared the subtype directly – or whether it should be included as standalone
     * definition with any collected member attributes assigned directly and the subtypes only being handled as generic types.
     *
     * @return whether to produce sub-schema for each subtype of a member's declared type, like the member had declared that subtype instead
     *
     * @since 4.27.0
     */
    boolean shouldTransparentlyResolveSubtypesOfMembers();

    /**
     * Determine whether all sub-schemas should be included in-line, even if they occur multiple times, and not in the schema's "definitions"/"$defs".
     *
     * @return whether to include all sub-schemas in-line
     */
    boolean shouldInlineAllSchemas();

    /**
     * Determine whether the {@link SchemaKeyword#TAG_SCHEMA} attribute with {@link SchemaKeyword#TAG_SCHEMA_VALUE} should be added.
     *
     * @return whether to add the schema version attribute
     */
    boolean shouldIncludeSchemaVersionIndicator();

    /**
     * Determine whether the {@link SchemaKeyword#TAG_REF} values should not just be URI compatible (as expected in JSON Schemas). It should further
     * respect the reduced set of characters as per the following regular expression (as expected by OpenAPI): {@code ^[a-zA-Z0-9\.\-_]+$}
     *
     * @return whether to use only alphanumeric characters, dots, dashes and underscores in {@link SchemaKeyword#TAG_REF} values
     */
    boolean shouldUsePlainDefinitionKeys();

    /**
     * Determine whether extra {@link SchemaKeyword#TAG_FORMAT} values should be included for "simple types".
     *
     * @return whether to include extra {@link SchemaKeyword#TAG_FORMAT} values
     */
    boolean shouldIncludeExtraOpenApiFormatValues();

    /**
     * Determine whether unnecessary {@link SchemaKeyword#TAG_ALLOF} elements should be removed and merged into their declaring schema when there are
     * no conflicts between the sub-schemas.
     *
     * @return whether to clean-up {@link SchemaKeyword#TAG_ALLOF} elements as the last step during schema generation
     */
    boolean shouldCleanupUnnecessaryAllOfElements();

    /**
     * Determine whether sub schemas should get the {@link SchemaKeyword#TAG_TYPE} added implicitly based on other contained tags, if it is missing.
     *
     * @return whether to try and imply the {@link SchemaKeyword#TAG_TYPE} from other contained tags in the schema
     */
    boolean shouldIncludeStrictTypeInfo();

    /**
     * Determine whether static fields should be included in the generated schema.
     *
     * @return whether to include static fields
     */
    boolean shouldIncludeStaticFields();

    /**
     * Determine whether static methods should be included in the generated schema.
     *
     * @return whether to included static methods
     */
    boolean shouldIncludeStaticMethods();

    /**
     * Determine whether non-void argument-free "getXyZ"/"isXyZ" methods should be represented by the respective field name "xyZ" by default.
     *
     * @return whether to treat argument-free methods as fields in schema
     */
    boolean shouldDeriveFieldsFromArgumentFreeMethods();

    /**
     * Determine whether a single allowed values should be represented by a {@link SchemaKeyword#TAG_CONST}. Otherwise a
     * {@link SchemaKeyword#TAG_ENUM} will be used even for a single allowed value.
     *
     * @return whether to automatically make use of the {@link SchemaKeyword#TAG_CONST "const"} keyword
     */
    boolean shouldRepresentSingleAllowedValueAsConst();

    /**
     * Determine whether "fake" container/array items should be subject to the same nullable checks as the actual declared member type.
     *
     * @return whether to perform nullable checks for "fake" container/array item typees
     *
     * @since 4.20.0
     */
    boolean shouldAllowNullableArrayItems();

    /**
     * Getter for the underlying object mapper.
     *
     * @return object mapper being used for generating JSON Schema structure
     */
    ObjectMapper getObjectMapper();

    /**
     * Generate an empty JSON node representing an object (which will subsequently be filled by the generator).
     * 
* This is equivalent to calling {@code getObjectMapper().createObjectNode()} * * @return JSON object node */ ObjectNode createObjectNode(); /** * Generate an empty JSON node representing an array (which will subsequently be filled by the generator). *
* This is equivalent to calling {@code getObjectMapper().createArrayNode()} * * @return JSON array node */ ArrayNode createArrayNode(); /** * Provide the explicit rule overrides of when to include particular annotations (e.g., with or without {@code @Inherited}). * * @return annotation inclusion rules for specific annotation types * * @since 4.31.0 */ Map, AnnotationInclusion> getAnnotationInclusionOverrides(); /** * Implementation of the {@link java.util.Comparator#compare(Object, Object)} interface method to determine the order of fields and methods in an * object's {@code "properties"}. * * @param first first field/method to compare to {@code second} * @param second second field/method to compare to {@code first} * @return a negative/positive integer as the first field/method should be positioned before/after the second respectively */ int sortProperties(MemberScope first, MemberScope second); /** * Getter for the naming strategy to be applied when determining key names in the "definitions"/"$defs". * * @return definition key naming strategy */ SchemaDefinitionNamingStrategy getDefinitionNamingStrategy(); /** * Look-up the non-standard JSON schema definition for a given property. Falling-back on the per-type custom definitions. * * @param type of targeted property * @param scope targeted scope for which to provide a custom definition * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @param ignoredDefinitionProvider custom definition provider to ignore * @return non-standard JSON schema definition for the given field/method (may be null) * @see #getCustomDefinition(ResolvedType, SchemaGenerationContext, CustomDefinitionProviderV2) */ > CustomDefinition getCustomDefinition(M scope, SchemaGenerationContext context, CustomPropertyDefinitionProvider ignoredDefinitionProvider); /** * Look-up the non-standard JSON schema definition for a given type. If this returns null, the standard behaviour is expected to be applied. * * @param javaType generic type to provide custom definition for * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @param ignoredDefinitionProvider custom definition provider to ignore * @return non-standard JSON schema definition (may be null) */ CustomDefinition getCustomDefinition(ResolvedType javaType, SchemaGenerationContext context, CustomDefinitionProviderV2 ignoredDefinitionProvider); /** * Look-up a declared type's subtypes in order to list those specifically (in an {@link SchemaKeyword#TAG_ANYOF}). * * @param javaType declared type to look-up subtypes for * @param context generation context (including a reference to the {@code TypeContext} for deriving a {@link ResolvedType} from a {@link Class}) * @return subtypes to list as possible alternatives for the declared type (may be empty) */ List resolveSubtypes(ResolvedType javaType, SchemaGenerationContext context); /** * Getter for the applicable type attribute overrides. * * @return overrides of a given JSON Schema node's type attributes */ List getTypeAttributeOverrides(); /** * Getter for the applicable instance attribute overrides for fields. * * @return overrides of a given JSON Schema node's instance attributes */ List> getFieldAttributeOverrides(); /** * Getter for the applicable instance attribute overrides for methods. * * @return overrides of a given JSON Schema node's instance attributes */ List> getMethodAttributeOverrides(); /** * Check whether a field/property is nullable. * * @param field object's field/property to check * @return whether the field/property is nullable */ boolean isNullable(FieldScope field); /** * Check whether a method's return value is nullable. * * @param method method to check * @return whether the method's return value is nullable */ boolean isNullable(MethodScope method); /** * Check whether a field/property value is required. * * @param field object's field/property to check * @return whether the field/property value should be required */ boolean isRequired(FieldScope field); /** * Check whether a method value is required. * * @param method method to check * @return whether the method value should be required */ boolean isRequired(MethodScope method); /** * Check whether a field/property value is deemed read-only, i.e., may be ignored or rejected when included in a request. * * @param field object's field/property to check * @return whether the field/property value should be read-only */ boolean isReadOnly(FieldScope field); /** * Check whether a method value is deemed read-only, i.e., may be ignored or rejected when included in a request. * * @param method method to check * @return whether the method value should be read-only */ boolean isReadOnly(MethodScope method); /** * Check whether a field/property value is deemed write-only, i.e., is not being returned in responses. * * @param field object's field/property to check * @return whether the field/property value should be write-only */ boolean isWriteOnly(FieldScope field); /** * Check whether a method value is deemed write-only, i.e., is not being returned in responses. * * @param method method to check * @return whether the method value should be write-only */ boolean isWriteOnly(MethodScope method); /** * Check whether a field/property should be ignored. * * @param field object's field/property to check * @return whether the field/property should be ignored */ boolean shouldIgnore(FieldScope field); /** * Check whether a method should be ignored. * * @param method method to check * @return whether the method should be ignored */ boolean shouldIgnore(MethodScope method); /** * Determine the alternative target type from an object's field/property. * * @param field object's field/property to determine the target type for * @return target type (may be null) * @deprecated use {@link #resolveTargetTypeOverrides(FieldScope)} instead */ @Deprecated default ResolvedType resolveTargetTypeOverride(FieldScope field) { List result = this.resolveTargetTypeOverrides(field); return result == null || result.isEmpty() ? null : result.get(0); } /** * Determine the alternative target type from a method's return value. * * @param method method for whose return value to determine the target type for * @return target type (may be null) * @deprecated use {@link #resolveTargetTypeOverrides(MethodScope)} instead */ @Deprecated default ResolvedType resolveTargetTypeOverride(MethodScope method) { List result = this.resolveTargetTypeOverrides(method); return result == null || result.isEmpty() ? null : result.get(0); } /** * Determine the alternative target types from an object's field/property. * * @param field object's field/property to determine the target type for * @return target types (may be null or empty) */ List resolveTargetTypeOverrides(FieldScope field); /** * Determine the alternative target types from a method's return value. * * @param method method for whose return value to determine the target type for * @return target types (may be null or empty) */ List resolveTargetTypeOverrides(MethodScope method); /** * Determine the alternative name in a parent JSON Schema's "properties" from an object's field/property. * * @param field object's field/property to determine name in parent JSON Schema's properties for * @return name in a parent JSON Schema's "properties" (may be null, thereby falling back on the default value) */ String resolvePropertyNameOverride(FieldScope field); /** * Determine the alternative name in a parent JSON Schema's "properties" from a method's return value. * * @param method method for whose return value to determine name in parent JSON Schema's properties for * @return name in a parent JSON Schema's "properties" (may be null, thereby falling back on the default value) */ String resolvePropertyNameOverride(MethodScope method); /** * Determine the "$id" of a context-independent type representation. * * @param scope context-independent type representation to determine "$id" value for * @return "$id" in a JSON Schema (may be null) */ String resolveIdForType(TypeScope scope); /** * Determine the "$anchor" of a context-independent type representation. * * @param scope context-independent type representation to determine "$anchor" value for * @return "$anchor" in a JSON Schema (may be null) */ String resolveAnchorForType(TypeScope scope); /** * Determine the "title" of an object's field/property. * * @param field object's field/property to determine "title" value for * @return "title" in a JSON Schema (may be null) */ String resolveTitle(FieldScope field); /** * Determine the "title" of a method's return value. * * @param method method for whose return value to determine "title" value for * @return "title" in a JSON Schema (may be null) */ String resolveTitle(MethodScope method); /** * Determine the "title" of a context-independent type representation. * * @param scope context-independent type representation to determine "title" value for * @return "title" in a JSON Schema (may be null) */ String resolveTitleForType(TypeScope scope); /** * Determine the "description" of an object's field/property. * * @param field object's field/property to determine "description" value for * @return "description" in a JSON Schema (may be null) */ String resolveDescription(FieldScope field); /** * Determine the "description" of a method's return value. * * @param method method for whose return value to determine "description" value for * @return "description" in a JSON Schema (may be null) */ String resolveDescription(MethodScope method); /** * Determine the "description" of a context-independent type representation. * * @param scope context-independent type representation to determine "description" value for * @return "description" in a JSON Schema (may be null) */ String resolveDescriptionForType(TypeScope scope); /** * Determine the "default" value of an object's field/property. * * @param field object's field/property to determine "default" value for * @return "default" in a JSON Schema (may be null) */ Object resolveDefault(FieldScope field); /** * Determine the "default" value of a method's return value. * * @param method method for whose return value to determine "default" value for * @return "default" in a JSON Schema (may be null) */ Object resolveDefault(MethodScope method); /** * Determine the "default" value of a context-independent type representation. * * @param scope context-independent type representation to determine "default" value for * @return "default" in a JSON Schema (may be null) */ Object resolveDefaultForType(TypeScope scope); /** * Determine the "dependentRequired" list of other properties' names, for which a value is required if the given field is present. * * @param field object's field/property to collect dependent property names for * @return "dependentRequired" list in a JSON Schema associated with the targeted field (may be empty) */ List resolveDependentRequires(FieldScope field); /** * Determine the "dependentRequired" list of other properties' names, for which a value is required if the given method * (or more likely: the field derived from this method) is present. * * @param method method to collect dependent property names for * @return "dependentRequired" list in a JSON Schema associated with the targeted method (may be empty) */ List resolveDependentRequires(MethodScope method); /** * Determine the "enum"/"const" of an object's field/property. * * @param field object's field/property to determine "enum"/"const" value for * @return "enum"/"const" in a JSON Schema (may be null) */ Collection resolveEnum(FieldScope field); /** * Determine the "enum"/"const" of a method's return value. * * @param method method for whose return value to determine "enum"/"const" value for * @return "enum"/"const" in a JSON Schema (may be null) */ Collection resolveEnum(MethodScope method); /** * Determine the "enum"/"const" of a context-independent type representation. * * @param scope context-independent type representation to determine "enum"/"const" value for * @return "enum"/"const" in a JSON Schema (may be null) */ Collection resolveEnumForType(TypeScope scope); /** * Determine the "additionalProperties" of an object's field/property. * * @param field object's field/property to determine "additionalProperties" value for * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @return "additionalProperties" in a JSON Schema (may be {@link Void}) to indicate no additional properties being allowed or may be null) */ JsonNode resolveAdditionalProperties(FieldScope field, SchemaGenerationContext context); /** * Determine the "additionalProperties" of a method's return value. * * @param method method for whose return value to determine "additionalProperties" value for * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @return "additionalProperties" in a JSON Schema (may be {@link Void}) to indicate no additional properties being allowed or may be null) */ JsonNode resolveAdditionalProperties(MethodScope method, SchemaGenerationContext context); /** * Determine the "additionalProperties" of a context-independent type representation. * * @param scope context-independent type representation to determine "additionalProperties" value for * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @return "additionalProperties" in a JSON Schema (may be null) */ JsonNode resolveAdditionalPropertiesForType(TypeScope scope, SchemaGenerationContext context); /** * Determine the "patternProperties" of an object's field/property. * * @param field object's field/property to determine "patternProperties" value for * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @return "patternProperties" in a JSON Schema (may be null), the keys representing the patterns and the mapped values their corresponding types */ Map resolvePatternProperties(FieldScope field, SchemaGenerationContext context); /** * Determine the "patternProperties" of a method's return value. * * @param method method for whose return value to determine "patternProperties" value for * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @return "patternProperties" in a JSON Schema (may be null), the keys representing the patterns and the mapped values their corresponding types */ Map resolvePatternProperties(MethodScope method, SchemaGenerationContext context); /** * Determine the "patternProperties" of a context-independent type representation. * * @param scope context-independent type representation to determine "patternProperties" value for * @param context generation context allowing to let the standard generation take over nested parts of the custom definition * @return "patternProperties" in a JSON Schema (may be null), the keys representing the patterns and the mapped values their corresponding types */ Map resolvePatternPropertiesForType(TypeScope scope, SchemaGenerationContext context); /** * Determine the "minLength" of an object's field/property. * * @param field object's field/property to determine "minLength" value for * @return "minLength" in a JSON Schema (may be null) */ Integer resolveStringMinLength(FieldScope field); /** * Determine the "minLength" of a method's return value. * * @param method method for whose return value to determine "minLength" value for * @return "minLength" in a JSON Schema (may be null) */ Integer resolveStringMinLength(MethodScope method); /** * Determine the "minLength" of a context-independent type representation. * * @param scope context-independent type representation to determine "minLength" value for * @return "minLength" in a JSON Schema (may be null) */ Integer resolveStringMinLengthForType(TypeScope scope); /** * Determine the "maxLength" of an object's field/property. * * @param field object's field/property to determine "maxLength" value for * @return "maxLength" in a JSON Schema (may be null) */ Integer resolveStringMaxLength(FieldScope field); /** * Determine the "maxLength" of a method's return value. * * @param method method for whose return value to determine "maxLength" value for * @return "maxLength" in a JSON Schema (may be null) */ Integer resolveStringMaxLength(MethodScope method); /** * Determine the "maxLength" of a context-independent type representation. * * @param scope context-independent type representation to determine "maxLength" value for * @return "maxLength" in a JSON Schema (may be null) */ Integer resolveStringMaxLengthForType(TypeScope scope); /** * Determine the "format" of an object's field/property. * * @param field object's field/property to determine "format" value for * @return "format" in a JSON Schema (may be null) */ String resolveStringFormat(FieldScope field); /** * Determine the "format" of a method's return value. * * @param method method for whose return value to determine "format" value for * @return "format" in a JSON Schema (may be null) */ String resolveStringFormat(MethodScope method); /** * Determine the "format" of a context-independent type representation. * * @param scope context-independent type representation to determine "format" value for * @return "format" in a JSON Schema (may be null) */ String resolveStringFormatForType(TypeScope scope); /** * Determine the "pattern" of an object's field/property. * * @param field object's field/property to determine "pattern" value for * @return "pattern" in a JSON Schema (may be null) */ String resolveStringPattern(FieldScope field); /** * Determine the "pattern" of a method's return value. * * @param method method for whose return value to determine "pattern" value for * @return "pattern" in a JSON Schema (may be null) */ String resolveStringPattern(MethodScope method); /** * Determine the "pattern" of a context-independent type representation. * * @param scope context-independent type representation to determine "pattern" value for * @return "pattern" in a JSON Schema (may be null) */ String resolveStringPatternForType(TypeScope scope); /** * Determine the "minimum" of an object's field/property. * * @param field object's field/property to determine "minimum" value for * @return "minimum" in a JSON Schema (may be null) */ BigDecimal resolveNumberInclusiveMinimum(FieldScope field); /** * Determine the "minimum" of a method's return value. * * @param method method for whose return value to determine "minimum" value for * @return "minimum" in a JSON Schema (may be null) */ BigDecimal resolveNumberInclusiveMinimum(MethodScope method); /** * Determine the "minimum" of a context-independent type representation. * * @param scope context-independent type representation to determine "minimum" value for * @return "minimum" in a JSON Schema (may be null) */ BigDecimal resolveNumberInclusiveMinimumForType(TypeScope scope); /** * Determine the "exclusiveMinimum" of an object's field/property. * * @param field object's field/property to determine "exclusiveMinimum" value for * @return "exclusiveMinimum" in a JSON Schema (may be null) */ BigDecimal resolveNumberExclusiveMinimum(FieldScope field); /** * Determine the "exclusiveMinimum" of a method's return value. * * @param method method for whose return value to determine "exclusiveMinimum" value for * @return "exclusiveMinimum" in a JSON Schema (may be null) */ BigDecimal resolveNumberExclusiveMinimum(MethodScope method); /** * Determine the "exclusiveMinimum" of a context-independent type representation. * * @param scope context-independent type representation to determine "exclusiveMinimum" value for * @return "exclusiveMinimum" in a JSON Schema (may be null) */ BigDecimal resolveNumberExclusiveMinimumForType(TypeScope scope); /** * Determine the "maximum" of an object's field/property. * * @param field object's field/property to determine "maximum" value for * @return "maximum" in a JSON Schema (may be null) */ BigDecimal resolveNumberInclusiveMaximum(FieldScope field); /** * Determine the "maximum" of a method's return value. * * @param method method for whose return value to determine "maximum" value for * @return "maximum" in a JSON Schema (may be null) */ BigDecimal resolveNumberInclusiveMaximum(MethodScope method); /** * Determine the "maximum" of a context-independent type representation. * * @param scope context-independent type representation to determine "maximum" value for * @return "maximum" in a JSON Schema (may be null) */ BigDecimal resolveNumberInclusiveMaximumForType(TypeScope scope); /** * Determine the "exclusiveMaximum" of an object's field/property. * * @param field object's field/property to determine "exclusiveMaximum" value for * @return "exclusiveMaximum" in a JSON Schema (may be null) */ BigDecimal resolveNumberExclusiveMaximum(FieldScope field); /** * Determine the "exclusiveMaximum" of a method's return value. * * @param method method for whose return value to determine "exclusiveMaximum" value for * @return "exclusiveMaximum" in a JSON Schema (may be null) */ BigDecimal resolveNumberExclusiveMaximum(MethodScope method); /** * Determine the "exclusiveMaximum" of a context-independent type representation. * * @param scope context-independent type representation to determine "exclusiveMaximum" value for * @return "exclusiveMaximum" in a JSON Schema (may be null) */ BigDecimal resolveNumberExclusiveMaximumForType(TypeScope scope); /** * Determine the "multipleOf" of an object's field/property. * * @param field object's field/property to determine "multipleOf" value for * @return "multipleOf" in a JSON Schema (may be null) */ BigDecimal resolveNumberMultipleOf(FieldScope field); /** * Determine the "multipleOf" of a method's return value. * * @param method method for whose return value to determine "multipleOf" value for * @return "multipleOf" in a JSON Schema (may be null) */ BigDecimal resolveNumberMultipleOf(MethodScope method); /** * Determine the "multipleOf" of a context-independent type representation. * * @param scope context-independent type representation to determine "multipleOf" value for * @return "multipleOf" in a JSON Schema (may be null) */ BigDecimal resolveNumberMultipleOfForType(TypeScope scope); /** * Determine the "minItems" of an object's field/property. * * @param field object's field/property to determine "minItems" value for * @return "minItems" in a JSON Schema (may be null) */ Integer resolveArrayMinItems(FieldScope field); /** * Determine the "minItems" of a method's return value. * * @param method method for whose return value to determine "minItems" value for * @return "minItems" in a JSON Schema (may be null) */ Integer resolveArrayMinItems(MethodScope method); /** * Determine the "minItems" of a context-independent type representation. * * @param scope context-independent type representation to determine "minItems" value for * @return "minItems" in a JSON Schema (may be null) */ Integer resolveArrayMinItemsForType(TypeScope scope); /** * Determine the "maxItems" of an object's field/property. * * @param field object's field/property to determine "maxItems" value for * @return "maxItems" in a JSON Schema (may be null) */ Integer resolveArrayMaxItems(FieldScope field); /** * Determine the "maxItems" of a method's return value. * * @param method method for whose return value to determine "maxItems" value for * @return "maxItems" in a JSON Schema (may be null) */ Integer resolveArrayMaxItems(MethodScope method); /** * Determine the "maxItems" of a context-independent type representation. * * @param scope context-independent type representation to determine "maxItems" value for * @return "maxItems" in a JSON Schema (may be null) */ Integer resolveArrayMaxItemsForType(TypeScope scope); /** * Determine the "uniqueItems" of an object's field/property. * * @param field object's field/property to determine "uniqueItems" value for * @return "uniqueItems" in a JSON Schema (may be null) */ Boolean resolveArrayUniqueItems(FieldScope field); /** * Determine the "uniqueItems" of a method's return value. * * @param method method for whose return value to determine "uniqueItems" value for * @return "uniqueItems" in a JSON Schema (may be null) */ Boolean resolveArrayUniqueItems(MethodScope method); /** * Determine the "uniqueItems" of a context-independent type representation. * * @param scope context-independent type representation to determine "uniqueItems" value for * @return "uniqueItems" in a JSON Schema (may be null) */ Boolean resolveArrayUniqueItemsForType(TypeScope scope); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy