public HardcodedModuleFactoriesResolver(BundleContext bundleContext, ModuleFactory... list) { List<ModuleFactory> factoryList = Arrays.asList(list); this.factories = new HashMap<>(factoryList.size()); for (ModuleFactory moduleFactory : list) { StringBuffer errors = new StringBuffer(); String moduleName = moduleFactory.getImplementationName(); if (moduleName == null || moduleName.isEmpty()) { throw new IllegalStateException("Invalid implementation name for " + moduleFactory); } String error = null; Map.Entry<ModuleFactory, BundleContext> conflicting = factories.get(moduleName); if (conflicting != null) { error = String.format( "Module name is not unique. Found two conflicting factories with same name '%s': " + "\n\t%s\n\t%s\n", moduleName, conflicting.getKey(), moduleFactory); } if (error == null) { factories.put(moduleName, new AbstractMap.SimpleEntry<>(moduleFactory, bundleContext)); } else { errors.append(error); } if (errors.length() > 0) { throw new IllegalArgumentException(errors.toString()); } } }
public List<ModuleIdentifier> findAllByFactory(ModuleFactory factory) { List<ModuleIdentifier> result = new ArrayList<>(); for (ModuleInternalTransactionalInfo info : modulesHolder.getAllInfos()) { if (factory.equals(info.getModuleFactory())) { result.add(info.getIdentifier()); } } return result; }