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 }