[attributes] Introduce attributes extensions

This commit is contained in:
2025-07-27 01:18:32 +02:00
parent e4ea5fdfc2
commit c9a609d457
28 changed files with 1627 additions and 3 deletions

View File

@@ -15,6 +15,9 @@ public interface TweedExtension {
default void extensionsFinalized() {
}
default void initialize() {
}
default void initEntry(ConfigEntry<?> configEntry) {
}
}

View File

@@ -217,6 +217,10 @@ public class DefaultConfigContainer<T> implements ConfigContainer<T> {
public void initialize() {
requireSetupPhase(ConfigContainerSetupPhase.TREE_ATTACHED);
for (TweedExtension extension : extensions()) {
extension.initialize();
}
assert rootEntry != null;
rootEntry.visitInOrder(entry -> {
for (TweedExtension extension : extensions()) {

View File

@@ -9,6 +9,13 @@ import static org.junit.jupiter.api.Assertions.*;
class AcyclicGraphSorterTest {
@Test
void trivialSort() {
AcyclicGraphSorter sorter = new AcyclicGraphSorter(2);
sorter.addEdge(0, 1);
assertArrayEquals(new int[]{ 0, 1 }, assertDoesNotThrow(sorter::sort));
}
@Test
void sort1() {
AcyclicGraphSorter sorter = new AcyclicGraphSorter(4);
@@ -73,4 +80,4 @@ class AcyclicGraphSorterTest {
AcyclicGraphSorter.GraphCycleException exception = assertThrows(AcyclicGraphSorter.GraphCycleException.class, sorter::sort);
assertEquals(Arrays.asList(0, 1), exception.cycleIndeces());
}
}
}