SchemaGenerationFeature.java

/*
 * SPDX-FileCopyrightText: none
 * SPDX-License-Identifier: CC0-1.0
 */

package gov.nist.secauto.metaschema.schemagen;

import gov.nist.secauto.metaschema.core.configuration.AbstractConfigurationFeature;

import edu.umd.cs.findbugs.annotations.NonNull;

/**
 * Configuration options for schema generation.
 *
 * @param <V>
 *          the feature value type
 */
public final class SchemaGenerationFeature<V>
    extends AbstractConfigurationFeature<V> {

  /**
   * If enabled, definitions that are defined inline will be generated as inline
   * types. If disabled, definitions will always be generated as global types.
   */
  @NonNull
  public static final SchemaGenerationFeature<Boolean> INLINE_DEFINITIONS
      = new SchemaGenerationFeature<>("inline-definitions", Boolean.class, false);

  /**
   * If enabled, child definitions of a choice that are defined inline will be
   * generated as inline types. If disabled, child definitions of a choice will
   * always be generated as global types. This option will only be used if
   * {@link #INLINE_DEFINITIONS} is also enabled.
   */
  @NonNull
  public static final SchemaGenerationFeature<Boolean> INLINE_CHOICE_DEFINITIONS
      = new SchemaGenerationFeature<>("inline-choice-definitions", Boolean.class, false);

  private SchemaGenerationFeature(
      @NonNull String name,
      @NonNull Class<V> valueClass,
      @NonNull V defaultValue) {
    super(name, valueClass, defaultValue);
  }

}