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 * Return true if ordering supports the modules passed in. 013 */ 014 default boolean supportsExpected(List<AvajeModule> modules) { 015 return true; 016 } 017 018 /** 019 * Accept a module for ordering 020 */ 021 void add(AvajeModule module); 022 023 /** 024 * Order the factories, returning the ordered list of module names. 025 */ 026 Set<String> orderModules(); 027 028 /** 029 * The list of factories in the order they should be built. 030 */ 031 List<AvajeModule> factories(); 032 033 /** 034 * Whether no modules are available 035 */ 036 boolean isEmpty(); 037 038}