From 33b1a76056616192831e147956aed1f47ee9086c Mon Sep 17 00:00:00 2001 From: Steven KERDUDOU Date: Mon, 22 Jan 2024 18:22:53 +0100 Subject: [PATCH] [core] Add SimpleEnumDefinitionProvider --- .../SimpleEnumDefinitionProvider.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 vertigo-core/src/main/java/io/vertigo/core/node/definition/SimpleEnumDefinitionProvider.java diff --git a/vertigo-core/src/main/java/io/vertigo/core/node/definition/SimpleEnumDefinitionProvider.java b/vertigo-core/src/main/java/io/vertigo/core/node/definition/SimpleEnumDefinitionProvider.java new file mode 100644 index 000000000..e19154050 --- /dev/null +++ b/vertigo-core/src/main/java/io/vertigo/core/node/definition/SimpleEnumDefinitionProvider.java @@ -0,0 +1,37 @@ +package io.vertigo.core.node.definition; + +import java.util.Arrays; +import java.util.List; + +/** + * Provides a list of definitions through an enum. + * + * @author skerdudou + */ +public interface SimpleEnumDefinitionProvider extends DefinitionProvider { + + /** + * Return a list of definitions with a set of already known definitions + * + * @param definitionSpace the actual definitionSpace + * @return the list of new definition to register + */ + @Override + default List get(final DefinitionSpace definitionSpace) { + final var enumValues = getEnumClass().getEnumConstants(); + + return Arrays.stream(enumValues) + .map(v -> (DefinitionSupplier) v::buildDefinition) + .toList(); + } + + Class>> getEnumClass(); + + static interface EnumDefinition> { + + D buildDefinition(DefinitionSpace definitionSpace); + + D get(); + + } +}