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