1 /*
2 * SPDX-FileCopyrightText: none
3 * SPDX-License-Identifier: CC0-1.0
4 */
5
6 package dev.metaschema.core.testsupport.builder;
7
8 import java.util.function.Consumer;
9
10 import dev.metaschema.core.model.ISource;
11 import dev.metaschema.core.model.constraint.IConstraintSet;
12 import edu.umd.cs.findbugs.annotations.NonNull;
13
14 /**
15 * A builder for creating {@link IConstraintSet} instances programmatically.
16 * <p>
17 * This builder is intended for test support, allowing constraint sets to be
18 * constructed without loading XML files.
19 */
20 public interface IConstraintSetBuilder {
21
22 /**
23 * Set the source for the constraint set.
24 *
25 * @param source
26 * the source information
27 * @return this builder
28 */
29 @NonNull
30 IConstraintSetBuilder source(@NonNull ISource source);
31
32 /**
33 * Add an imported constraint set.
34 *
35 * @param imports
36 * the constraint sets to import
37 * @return this builder
38 */
39 @NonNull
40 IConstraintSetBuilder imports(@NonNull IConstraintSet... imports);
41
42 /**
43 * Add a context to the constraint set.
44 *
45 * @param contextConfigurer
46 * a consumer that configures the context
47 * @return this builder
48 */
49 @NonNull
50 IConstraintSetBuilder context(@NonNull Consumer<IContextBuilder> contextConfigurer);
51
52 /**
53 * Build the constraint set.
54 *
55 * @return the constructed constraint set
56 */
57 @NonNull
58 IConstraintSet build();
59
60 /**
61 * Create a new constraint set builder.
62 *
63 * @return the builder
64 */
65 @NonNull
66 static IConstraintSetBuilder builder() {
67 return new ConstraintSetBuilder();
68 }
69 }