@@ -39,19 +39,21 @@ public static OrchestrationTemplate create() {
3939 */
4040 @ Nonnull
4141 public static ReferenceBuilder reference () {
42- return new ReferenceBuilder ();
42+ final var templ = TemplateRefByScenarioNameVersion .create ();
43+ return s -> n -> v -> new OrchestrationTemplateReference (templ .scenario (s ).name (n ).version (v ));
4344 }
4445
4546 /** Intermediate object to build a template reference. */
46- public static class ReferenceBuilder {
47+ @ FunctionalInterface
48+ public interface ReferenceBuilder {
4749 /**
4850 * Build a template reference with the given id.
4951 *
5052 * @param id The id of the template.
5153 * @return A template reference with the given id.
5254 */
5355 @ Nonnull
54- public OrchestrationTemplateReference byId (@ Nonnull final String id ) {
56+ default OrchestrationTemplateReference byId (@ Nonnull final String id ) {
5557 return new OrchestrationTemplateReference (TemplateRefByID .create ().id (id ));
5658 }
5759
@@ -62,20 +64,14 @@ public OrchestrationTemplateReference byId(@Nonnull final String id) {
6264 * @return An intermediate object to build the template reference.
6365 */
6466 @ Nonnull
65- public ReferenceBuilder1 byScenarioNameVersion (@ Nonnull final String scenario ) {
66- return new ReferenceBuilder1 (scenario );
67- }
67+ ReferenceBuilder1 byScenario (@ Nonnull final String scenario );
6868 }
6969
7070 /**
7171 * Intermediate object to build a template reference with the given scenario, name, and version.
7272 */
73- public static class ReferenceBuilder1 {
74- @ Nonnull private final String scenario ;
75-
76- private ReferenceBuilder1 (@ Nonnull final String scenario ) {
77- this .scenario = scenario ;
78- }
73+ @ FunctionalInterface
74+ public interface ReferenceBuilder1 {
7975
8076 /**
8177 * Build a template reference with the given scenario, name, and version.
@@ -84,33 +80,21 @@ private ReferenceBuilder1(@Nonnull final String scenario) {
8480 * @return An intermediate object to build the template reference.
8581 */
8682 @ Nonnull
87- public ReferenceBuilder2 name (@ Nonnull final String name ) {
88- return new ReferenceBuilder2 (scenario , name );
89- }
83+ ReferenceBuilder2 name (@ Nonnull final String name );
9084 }
9185
9286 /**
9387 * Intermediate object to build a template reference with the given scenario, name, and version.
9488 */
95- public static class ReferenceBuilder2 {
96- @ Nonnull private final String scenario ;
97- @ Nonnull private final String name ;
98-
99- private ReferenceBuilder2 (@ Nonnull final String scenario , @ Nonnull final String name ) {
100- this .scenario = scenario ;
101- this .name = name ;
102- }
103-
89+ @ FunctionalInterface
90+ public interface ReferenceBuilder2 {
10491 /**
10592 * Build a template reference with the given scenario, name, and version.
10693 *
10794 * @param version The version of the template.
10895 * @return A template reference with the given scenario, name, and version.
10996 */
11097 @ Nonnull
111- public OrchestrationTemplateReference version (@ Nonnull final String version ) {
112- return new OrchestrationTemplateReference (
113- TemplateRefByScenarioNameVersion .create ().scenario (scenario ).name (name ).version (version ));
114- }
98+ OrchestrationTemplateReference version (@ Nonnull final String version );
11599 }
116100}
0 commit comments