001package io.avaje.inject.spi;
002
003import java.util.List;
004import java.util.Set;
005
006/**
007 * Determines Multi-Module wiring order.
008 */
009public interface ModuleOrdering extends InjectExtension {
010
011  /**
012   * Order the factories, returning the ordered list of module names.
013   */
014  Set<String> orderModules();
015
016  /**
017   * The list of factories in the order they should be built.
018   */
019  List<AvajeModule> factories();
020
021  /**
022   * Whether no modules are available
023   */
024  boolean isEmpty();
025
026  /**
027   * Accept a module for ordering
028   */
029  void add(AvajeModule module);
030}