public static <T extends TemplatableXBean> LinkedHashMap<String, T> sortByDependency(final List<T> list) { final Map<String, T> map = createMapByName(list); final LinkedHashMap<String, T> result = new LinkedHashMap<String, T>(map.size()); if (list != null) { for (final T item : list) { addDependency(item, result, map); } } return result; }
private List<SamplerConfig> configureSamplers(final List<SamplerXBean> samplers, final Map<String, InputConfig> inputs, final Map<String, OutputConfig> outputs, final Map<String, List<SelectorConfig>> selectorGroups, final Map<String, Object> globalVariables) { final LinkedHashMap<String, SamplerXBean> namedSamplers = TemplatableXBeanUtils.sortByDependency(samplers); final List<SamplerConfig> result = new LinkedList<SamplerConfig>(); if (samplers != null) { for (final SamplerXBean def : samplers) { TemplatableXBeanUtils.applyTemplate(def, namedSamplers); if (def.isInstantiatable()) { result.add(def.toConfig(inputs, outputs, selectorGroups, globalVariables)); } } } return result; }
private static <T extends TemplatableXBean> void addDependency(final T item, final LinkedHashMap<String, T> result, final Map<String, T> map) { if (!result.containsKey(item.getName())) { if (item.hasParent()) { final T parent = map.get(item.getParent()); if (parent == null) { throw new ConfigurationException("Template named \"" + item.getParent() + "\" not found"); } addDependency(parent, result, map); } result.put(item.getName(), item); } }
private static <T extends TemplatableXBean> void addDependency(final T item, final LinkedHashMap<String, T> result, final Map<String, T> map) { if (!result.containsKey(item.getName())) { if (item.hasParent()) { final T parent = map.get(item.getParent()); if (parent == null) { throw new ConfigurationException("Template named \"" + item.getParent() + "\" not found"); } addDependency(parent, result, map); } result.put(item.getName(), item); } }
private List<SamplerConfig> configureSamplers(final List<SamplerXBean> samplers, final Map<String, InputConfig> inputs, final Map<String, OutputConfig> outputs, final Map<String, List<SelectorConfig>> selectorGroups, final Map<String, Object> globalVariables) { final LinkedHashMap<String, SamplerXBean> namedSamplers = TemplatableXBeanUtils.sortByDependency(samplers); final List<SamplerConfig> result = new LinkedList<SamplerConfig>(); if (samplers != null) { for (final SamplerXBean def : samplers) { TemplatableXBeanUtils.applyTemplate(def, namedSamplers); if (def.isInstantiatable()) { result.add(def.toConfig(inputs, outputs, selectorGroups, globalVariables)); } } } return result; }
public static <T extends TemplatableXBean> LinkedHashMap<String, T> sortByDependency(final List<T> list) { final Map<String, T> map = createMapByName(list); final LinkedHashMap<String, T> result = new LinkedHashMap<String, T>(map.size()); if (list != null) { for (final T item : list) { addDependency(item, result, map); } } return result; }
private Map<String, InputConfig> configureInputs(final List<InputXBean> list) { final LinkedHashMap<String, InputXBean> xbeans = TemplatableXBeanUtils.sortByDependency(list); final Map<String, InputConfig> result = new HashMap<>(); for (final InputXBean fromItem : xbeans.values()) { TemplatableXBeanUtils.applyTemplate(fromItem, xbeans); if (fromItem.isInstantiatable()) { final InputConfig item = fromItem.toConfig(); if (result.containsKey(item.getName())) { throw new ConfigurationException("Two inputs with the same name "+item.getName()); } result.put(item.getName(), item); } } return result; }
private Map<String, InputConfig> configureInputs(final List<InputXBean> list) { final LinkedHashMap<String, InputXBean> xbeans = TemplatableXBeanUtils.sortByDependency(list); final Map<String, InputConfig> result = new HashMap<>(); for (final InputXBean fromItem : xbeans.values()) { TemplatableXBeanUtils.applyTemplate(fromItem, xbeans); if (fromItem.isInstantiatable()) { final InputConfig item = fromItem.toConfig(); if (result.containsKey(item.getName())) { throw new ConfigurationException("Two inputs with the same name "+item.getName()); } result.put(item.getName(), item); } } return result; }