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

com.github.victools.jsonschema.module.jackson.JacksonOption Maven / Gradle / Ivy

/*
 * Copyright 2020 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.module.jackson;

/**
 * Flags to enable/disable certain aspects of the {@link JacksonModule}'s processing.
 */
public enum JacksonOption {
    /**
     * Use this option to treat enum types with a {@link com.fasterxml.jackson.annotation.JsonValue JsonValue} annotation on one of its methods as
     * plain strings in the generated schema. If no such annotation with {@code value = true} is present on exactly one argument-free method, it will
     * fall-back on following custom definitions (e.g. from one of the standard generator {@code Option}s).
     * 
* This can be enabled at the same time as the {@link #FLATTENED_ENUMS_FROM_JSONPROPERTY} option, with the {@code JsonValue} annotation taking * precedence. * * @see JacksonOption#FLATTENED_ENUMS_FROM_JSONPROPERTY * @see com.github.victools.jsonschema.generator.Option#FLATTENED_ENUMS * @see com.github.victools.jsonschema.generator.Option#FLATTENED_ENUMS_FROM_TOSTRING */ FLATTENED_ENUMS_FROM_JSONVALUE, /** * Use this option to treat enum types with a {@link com.fasterxml.jackson.annotation.JsonProperty JsonProperty} annotation on each of its * constants as plain strings in the generated schema. If no such annotation is present on each enum constants, it will fall-back on following * custom definitions (e.g. from one of the standard generator {@code Option}s). *
* This can be enabled at the same time as the {@link #FLATTENED_ENUMS_FROM_JSONVALUE} option, with the {@code JsonValue} annotation taking * precedence. * * @see JacksonOption#FLATTENED_ENUMS_FROM_JSONVALUE * @see com.github.victools.jsonschema.generator.Option#FLATTENED_ENUMS * @see com.github.victools.jsonschema.generator.Option#FLATTENED_ENUMS_FROM_TOSTRING */ FLATTENED_ENUMS_FROM_JSONPROPERTY, /** * Use this option to sort an object's properties according to associated * {@link com.fasterxml.jackson.annotation.JsonPropertyOrder JsonPropertyOrder} annotations. Fields and methods without such an annotation are * listed after annotated properties. */ RESPECT_JSONPROPERTY_ORDER, /** * Use this option to ignore all methods that don't have a {@link com.fasterxml.jackson.annotation.JsonProperty JsonProperty} annotation * themselves or in case of getter methods on their associated field. When including non-getter methods with annotated property names, you'll * probably want to enable the general {@code Option.FIELDS_DERIVED_FROM_ARGUMENTFREE_METHODS} as well, in order to avoid parentheses at the end. * * @see com.github.victools.jsonschema.generator.Option#FIELDS_DERIVED_FROM_ARGUMENTFREE_METHODS * @since 4.21.0 */ INCLUDE_ONLY_JSONPROPERTY_ANNOTATED_METHODS, /** * Use this option to skip property name changes according to {@link com.fasterxml.jackson.databind.annotation.JsonNaming JsonNaming} annotations. */ IGNORE_PROPERTY_NAMING_STRATEGY, /** * Use this option to ensure all looked-up subtypes according to {@code @JsonSubTypes} annotations are referenced via the central "$defs". This * applies to the wrapping schema produced based on {@code @JsonTypeInfo} annotations, e.g., with wrapping object/array or additional property. * * @since 4.27.0 */ ALWAYS_REF_SUBTYPES, /** * Use this option to ensure all looked-up subtypes according to {@code @JsonSubTypes} annotations are referenced via the central "$defs". This * applies to the nested schema inside the wrapping object/array or "allOf" based on {@code @JsonTypeInfo} annotations. This can be used to * counter-act the {@link com.github.victools.jsonschema.generator.Option#DEFINITIONS_FOR_ALL_OBJECTS Option.DEFINITIONS_FOR_ALL_OBJECTS}. * Beware: as with every explicit inlining, recursive non-transformed references can result in a stack overflow during schema generation when this * option is enabled (similar to {@link com.github.victools.jsonschema.generator.Option#INLINE_ALL_SCHEMAS Option.INLINE_ALL_SCHEMAS})! * * @since 4.30.0 */ INLINE_TRANSFORMED_SUBTYPES, /** * Use this option to skip the automatic look-up of subtypes according to {@code @JsonSubTypes} annotations. */ SKIP_SUBTYPE_LOOKUP, /** * Use this option to skip the transformation according to {@code @JsonTypeInfo} annotations (typically used to identify specific subtypes). */ IGNORE_TYPE_INFO_TRANSFORM, /** * Use this option to include fields annotated with {@code @JsonProperty(required = true)} in the containing type's list of "required" properties. * * @since 4.18.0 */ RESPECT_JSONPROPERTY_REQUIRED, /** * Use this option to consider {@code @JsonIdentityReference(alwaysAsId = true)} annotations on fields/methods or the type itself. * * @since 4.28.0 */ JSONIDENTITY_REFERENCE_ALWAYS_AS_ID; }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy