1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.schemagen.json.impl;
7   
8   import java.util.List;
9   
10  import dev.metaschema.core.model.IAssemblyDefinition;
11  import dev.metaschema.core.model.IChoiceInstance;
12  import edu.umd.cs.findbugs.annotations.NonNull;
13  
14  /**
15   * Supports generation of a JSON schema based on a Metaschema model assembly
16   * definition, which can be generated inline or as a JSON schema definition.
17   */
18  public interface IJsonSchemaDefinitionAssembly extends IJsonSchemaModelDefinition {
19    @Override
20    IAssemblyDefinition getDefinition();
21  
22    /**
23     * Get the property combinations, which are exploded based on the presence of an
24     * {@link IChoiceInstance} in the assembly definition's model.
25     *
26     * @return the sequence of possible property combinations or an empty list if
27     *         the resulting JSON schema has no properties
28     */
29    @NonNull
30    List<JsonSchemaHelper.Choice> getChoices();
31  }