1 /*
2 * SPDX-FileCopyrightText: none
3 * SPDX-License-Identifier: CC0-1.0
4 */
5
6 package dev.metaschema.core.testsupport.builder;
7
8 import dev.metaschema.core.testsupport.mocking.IMockFactory;
9 import edu.umd.cs.findbugs.annotations.NonNull;
10
11 /**
12 * Represents a factory used to produce Metaschema module-based definitions and
13 * instances.
14 */
15 public interface IModuleMockFactory extends IMockFactory {
16 /**
17 * Get a new flag builder.
18 *
19 * @return the builder
20 */
21 @NonNull
22 default IFlagBuilder flag() {
23 return IFlagBuilder.builder();
24 }
25
26 /**
27 * Get a new field builder.
28 *
29 * @return the builder
30 */
31 @NonNull
32 default IFieldBuilder field() {
33 return IFieldBuilder.builder();
34 }
35
36 /**
37 * Get a new assembly builder.
38 *
39 * @return the builder
40 */
41 @NonNull
42 default IAssemblyBuilder assembly() {
43 return IAssemblyBuilder.builder();
44 }
45
46 /**
47 * Get a new module builder.
48 *
49 * @return the builder
50 */
51 @NonNull
52 default IModuleBuilder module() {
53 return IModuleBuilder.builder();
54 }
55
56 /**
57 * Create a reference to an assembly definition by name. The reference will be
58 * resolved when the module is built, allowing recursive assembly structures.
59 *
60 * @param name
61 * the local name of the referenced assembly definition
62 * @return a builder that represents the reference
63 */
64 @NonNull
65 default IModelBuilder<?> assemblyRef(@NonNull String name) {
66 return new AssemblyReference(name);
67 }
68
69 /**
70 * Create a reference to a field definition by name. The reference will be
71 * resolved when the module is built.
72 *
73 * @param name
74 * the local name of the referenced field definition
75 * @return a builder that represents the reference
76 */
77 @NonNull
78 default IModelBuilder<?> fieldRef(@NonNull String name) {
79 return new FieldReference(name);
80 }
81
82 /**
83 * Get a new constraint set builder.
84 *
85 * @return the builder
86 */
87 @NonNull
88 default IConstraintSetBuilder constraintSet() {
89 return IConstraintSetBuilder.builder();
90 }
91 }