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); }
private <C extends Pluggable> boolean isDisabled(Class<C> clazz, final C next) { return Boolean.getBoolean("qpid.plugin.disabled:"+clazz.getSimpleName().toLowerCase()+"."+next.getType()) || (next instanceof ConfiguredObjectTypeFactory && isDisabledConfiguredType((ConfiguredObjectTypeFactory<?>) next)); }
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())); }
@Override public Object perform(Map<String, Object> request, Broker broker) { try { String className = (String) request.get("plugin"); QpidServiceLoader serviceLoader = new QpidServiceLoader(); final Class<Pluggable> clazz = (Class<Pluggable>) Class.forName("org.apache.qpid.server.plugin."+className); List<String> values = new ArrayList<String>(); for(Pluggable instance : serviceLoader.instancesOf(clazz)) { values.add(instance.getType()); } return values; } catch (ClassNotFoundException e) { return Collections.emptyList(); } } }