static Map<String, ManagementControllerFactory> loadFactories() { final Iterable<ManagementControllerFactory> factories = new QpidServiceLoader().atLeastOneInstanceOf(ManagementControllerFactory.class); return StreamSupport.stream(factories.spliterator(), false) .collect(Collectors.toMap(ManagementControllerFactory::getVersion, f -> f)); } }
static Set<CategoryControllerFactory> findFactories(String version) { final Iterable<CategoryControllerFactory> factories = new QpidServiceLoader().atLeastOneInstanceOf(CategoryControllerFactory.class); return StreamSupport.stream(factories.spliterator(), false) .filter(f -> version.equals(f.getModelVersion())) .collect(Collectors.toSet()); } }
public PluggableFactoryLoader(Class<T> factoryClass) { Map<String, T> fm = new HashMap<String, T>(); QpidServiceLoader qpidServiceLoader = new QpidServiceLoader(); Iterable<T> factories = qpidServiceLoader.atLeastOneInstanceOf(factoryClass); for (T factory : factories) { String descriptiveType = factory.getType(); if (fm.containsKey(descriptiveType)) { throw new IllegalStateException(factoryClass.getSimpleName() + " with type name '" + descriptiveType + "' is already registered using class '" + fm.get(descriptiveType).getClass().getName() + "', can not register class '" + factory.getClass().getName() + "'"); } fm.put(descriptiveType, factory); } _factoriesMap = Collections.unmodifiableMap(fm); _types = Collections.unmodifiableSortedSet(new TreeSet<String>(_factoriesMap.keySet())); }
public static JDBCConnectionProviderFactory get(String type) { QpidServiceLoader qpidServiceLoader = new QpidServiceLoader(); Iterable<JDBCConnectionProviderFactory> factories = qpidServiceLoader.atLeastOneInstanceOf(JDBCConnectionProviderFactory.class); for(JDBCConnectionProviderFactory factory : factories) { if(factory.getType().equals(type)) { return factory; } } return null; } }