private static boolean isSolved( final DIDependency dependency, final Set<String> parentComponentInfos, final Set<String> allComponentInfos, final List<String> sorted) { // Une dépendace est résolue si tous les ids concernés sont résolus. // Si la dépendance est déjà résolue et bien c'est bon on pass à la dépendances suivante if (dependency.isRequired()) { return parentComponentInfos.contains(dependency.getName()) || sorted.contains(dependency.getName()); } else if (dependency.isOption()) { // Si l'objet fait partie de la liste alors il doit être résolu. if (allComponentInfos.contains(dependency.getName())) { return sorted.contains(dependency.getName()); } // Sinon comme il est optionnel c'est ok. return true; } else if (dependency.isList()) { // Si l'objet fait partie de la liste alors il doit être résolu. for (final String id : allComponentInfos) { final boolean match = id.equals(dependency.getName()) || id.startsWith(dependency.getName() + '#'); if (match && !sorted.contains(id)) { // L'objet id fait partie de la liste return sorted.contains(id); } } return true; } throw new IllegalStateException(); }