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}