private void registerSystemAddressSpaces() { QpidServiceLoader qpidServiceLoader = new QpidServiceLoader(); Iterable<SystemAddressSpaceCreator> factories = qpidServiceLoader.instancesOf(SystemAddressSpaceCreator.class); for(SystemAddressSpaceCreator creator : factories) { creator.register(_addressSpaceRegistry); } }
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)); } }
@SuppressWarnings("unused") public static Collection<String> getAvailableConfigurationEncrypters() { return (new QpidServiceLoader()).getInstancesByType(ConfigurationSecretEncrypterFactory.class).keySet(); }
/** * @throws RuntimeException if at least one implementation is not found. */ public <C extends Pluggable> Iterable<C> atLeastOneInstanceOf(Class<C> clazz) { return instancesOf(clazz, true); }
private <C extends Pluggable> Iterable<C> instancesOf(Class<C> clazz, boolean atLeastOne) { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); Iterator<C> serviceLoaderIterator = ServiceLoader.load(clazz, classLoader).iterator(); // create a new list so we can log the count List<C> serviceImplementations = new ArrayList<C>(); while(serviceLoaderIterator.hasNext()) { C next = serviceLoaderIterator.next(); if(!isDisabled(clazz, next) && isAvailable(next)) { serviceImplementations.add(next); } } if(atLeastOne && serviceImplementations.isEmpty()) { throw new ServerScopedRuntimeException("At least one implementation of " + clazz + " expected"); } LOGGER.debug("Found {} implementations of {}", serviceImplementations.size(), clazz); return serviceImplementations; }
public <C extends Pluggable> Iterable<C> instancesOf(Class<C> clazz) { return instancesOf(clazz, false); }
private void registerSystemNodes() { QpidServiceLoader qpidServiceLoader = new QpidServiceLoader(); Iterable<SystemNodeCreator> factories = qpidServiceLoader.instancesOf(SystemNodeCreator.class); for(SystemNodeCreator creator : factories) { creator.register(_systemNodeRegistry); } }
@Override public MessageStoreSerializer newInstance() { return new QpidServiceLoader().getInstancesByType(MessageStoreSerializer.class).get(MessageStoreSerializer.LATEST); }
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; } }
public <C extends Pluggable> Map<String,C> getInstancesByType(Class<C> clazz) { Map<String,C> instances = new HashMap<>(); for(C instance : instancesOf(clazz)) { instances.put(instance.getType(), instance); } return Collections.unmodifiableMap(instances); }
public static Set<Protocol> getInstalledProtocols() { Set<Protocol> protocols = new HashSet<>(); for(ProtocolEngineCreator installedEngine : (new QpidServiceLoader()).instancesOf(ProtocolEngineCreator.class)) { protocols.add(installedEngine.getVersion()); } return protocols; }
@SuppressWarnings("unused") public static Collection<String> validIdentityResolvers() { return new QpidServiceLoader().getInstancesByType(OAuth2IdentityResolverService.class).keySet(); } }
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()); } }
private SystemConfigBootstrapModel() { setRootCategory(SystemConfig.class); _objectFactory = new ConfiguredObjectFactoryImpl(this); _typeRegistry = new ConfiguredObjectTypeRegistry((new QpidServiceLoader()).instancesOf(ConfiguredObjectRegistration.class), (new QpidServiceLoader()).instancesOf(ConfiguredObjectAttributeInjector.class), getSupportedCategories(), _objectFactory); }
@Override public URI getDefaultIdentityResolverEndpointURI() { final OAuth2IdentityResolverService identityResolverService = new QpidServiceLoader().getInstancesByType(OAuth2IdentityResolverService.class).get(getIdentityResolverType()); return identityResolverService == null ? null : identityResolverService.getDefaultIdentityResolverEndpointURI(this); }
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())); }
static Set<TypeControllerFactory> findFactories(String version) { final Iterable<TypeControllerFactory> factories = new QpidServiceLoader().instancesOf(TypeControllerFactory.class); return StreamSupport.stream(factories.spliterator(), false) .filter(f -> version.equals(f.getModelVersion())) .collect(Collectors.toSet()); }
@Override public String getDefaultScope() { final OAuth2IdentityResolverService identityResolverService = new QpidServiceLoader().getInstancesByType(OAuth2IdentityResolverService.class).get(getIdentityResolverType()); return identityResolverService == null ? null : identityResolverService.getDefaultScope(this); }
LinkRegistryModel createLinkRegistry() { LinkRegistryModel linkRegistry; Iterator<LinkRegistryFactory> linkRegistryFactories = (new QpidServiceLoader()).instancesOf(LinkRegistryFactory.class).iterator(); if (linkRegistryFactories.hasNext()) { final LinkRegistryFactory linkRegistryFactory = linkRegistryFactories.next(); if (linkRegistryFactories.hasNext()) { throw new RuntimeException("Found multiple implementations of LinkRegistry"); } linkRegistry = linkRegistryFactory.create(this); } else { linkRegistry = null; } return linkRegistry; }
@Override public URI getDefaultTokenEndpointURI() { final OAuth2IdentityResolverService identityResolverService = new QpidServiceLoader().getInstancesByType(OAuth2IdentityResolverService.class).get(getIdentityResolverType()); return identityResolverService == null ? null : identityResolverService.getDefaultTokenEndpointURI(this); }