private Map<String, QuotaSource> buildQuotaSources(Collection<String> quotaSourceFactoryClasses,
      QuotaConfig quotaConfig, AccountService accountService, QuotaMetrics quotaMetrics, RouterConfig routerConfig)
      throws ReflectiveOperationException {
    Map<String, QuotaSource> quotaSourceObjectMap = new HashMap<>();
    for (String quotaSourceFactoryClass : quotaSourceFactoryClasses) {
      if (!quotaSourceObjectMap.containsKey(quotaSourceFactoryClass)) {
        quotaSourceObjectMap.put(quotaSourceFactoryClass,
            ((QuotaSourceFactory) Utils.getObj(quotaSourceFactoryClass, quotaConfig, accountService,
                quotaMetrics, routerConfig)).getQuotaSource());
      }
    }
    return quotaSourceObjectMap;
  }
Create the specified {@link QuotaSource} objects.
@param quotaSourceFactoryClasses {@link Collection} of {@link QuotaSourceFactory} classes.
@param quotaConfig {@link QuotaConfig} object.
@param accountService {@link AccountService} object.
@param quotaMetrics {@link QuotaMetrics} object.
@param routerConfig {@link RouterConfig} object.
@return Map of {@link QuotaSourceFactory} class names to {@link QuotaSource} objects.
@throws ReflectiveOperationException if the source objects could not be created.
ambry-quota/src/main/java/com/github/ambry/quota/AmbryQuotaManager.java