private RuleProviderSorter(List<RuleProvider> providers) { this.providers = new ArrayList<>(providers); initializeLookupCaches(); sort(); }
private RuleProviderSorter(List<RuleProvider> providers) { this.providers = new ArrayList<>(providers); initializeLookupCaches(); sort(); }
/** * Prints all of the {@link RulePhase} objects in the order that they should execute. This is primarily for debug purposes and should be called * before the entire {@link RuleProvider} list is sorted, as this will allow us to print the {@link RulePhase} list without the risk of * user-introduced cycles making the sort impossible. */ private void printRulePhases(List<RuleProvider> allProviders) { List<RuleProvider> unsortedPhases = new ArrayList<>(); for (RuleProvider provider : allProviders) { if (provider instanceof RulePhase) unsortedPhases.add(provider); } List<RuleProvider> sortedPhases = RuleProviderSorter.sort(unsortedPhases); StringBuilder rulePhaseSB = new StringBuilder(); for (RuleProvider phase : sortedPhases) { Class<?> unproxiedClass = Proxies.unwrap(phase).getClass(); rulePhaseSB.append("\tPhase: ").append(unproxiedClass.getSimpleName()).append(System.lineSeparator()); } LOG.info("Rule Phases: [\n" + rulePhaseSB.toString() + "]"); }
/** * Prints all of the {@link RulePhase} objects in the order that they should execute. This is primarily for debug purposes and should be called * before the entire {@link RuleProvider} list is sorted, as this will allow us to print the {@link RulePhase} list without the risk of * user-introduced cycles making the sort impossible. */ private void printRulePhases(List<RuleProvider> allProviders) { List<RuleProvider> unsortedPhases = new ArrayList<>(); for (RuleProvider provider : allProviders) { if (provider instanceof RulePhase) unsortedPhases.add(provider); } List<RuleProvider> sortedPhases = RuleProviderSorter.sort(unsortedPhases); StringBuilder rulePhaseSB = new StringBuilder(); for (RuleProvider phase : sortedPhases) { Class<?> unproxiedClass = Proxies.unwrap(phase).getClass(); rulePhaseSB.append("\tPhase: ").append(unproxiedClass.getSimpleName()).append(System.lineSeparator()); } LOG.info("Rule Phases: [\n" + rulePhaseSB.toString() + "]"); }
private List<RuleProvider> getProviders(RuleLoaderContext ruleLoaderContext) { LOG.info("Starting provider load..."); List<RuleProvider> unsortedProviders = new ArrayList<>(); for (RuleProviderLoader loader : loaders) { if (ruleLoaderContext.isFileBasedRulesOnly() && !loader.isFileBased()) continue; unsortedProviders.addAll(loader.getProviders(ruleLoaderContext)); } LOG.info("Loaded, now sorting, etc"); checkForDuplicateProviders(unsortedProviders); printRulePhases(unsortedProviders); List<RuleProvider> sortedProviders = RuleProviderSorter.sort(unsortedProviders); ServiceLogger.logLoadedServices(LOG, RuleProvider.class, sortedProviders); LOG.info("Finished provider load"); return Collections.unmodifiableList(sortedProviders); }
private List<RuleProvider> getProviders(RuleLoaderContext ruleLoaderContext) { LOG.info("Starting provider load..."); List<RuleProvider> unsortedProviders = new ArrayList<>(); for (RuleProviderLoader loader : loaders) { if (ruleLoaderContext.isFileBasedRulesOnly() && !loader.isFileBased()) continue; unsortedProviders.addAll(loader.getProviders(ruleLoaderContext)); } LOG.info("Loaded, now sorting, etc"); checkForDuplicateProviders(unsortedProviders); printRulePhases(unsortedProviders); List<RuleProvider> sortedProviders = RuleProviderSorter.sort(unsortedProviders); ServiceLogger.logLoadedServices(LOG, RuleProvider.class, sortedProviders); LOG.info("Finished provider load"); return Collections.unmodifiableList(sortedProviders); }