private List<Pair<String, String>> parseQuotaEnforcerAndSourceInfo(String quotaEnforcerSourceJson) {
    if (quotaEnforcerSourceJson.isEmpty()) {
      return Collections.emptyList();
    }
    List<Pair<String, String>> quotaEnforcerSourcePairs = new ArrayList<>();
    JSONObject root = new JSONObject(quotaEnforcerSourceJson);
    JSONArray all = root.getJSONArray(QuotaConfig.QUOTA_ENFORCER_SOURCE_PAIR_INFO_STR);
    for (int i = 0; i < all.length(); i++) {
      JSONObject entry = all.getJSONObject(i);
      String enforcer = entry.getString(QuotaConfig.ENFORCER_STR);
      String source = entry.getString(QuotaConfig.SOURCE_STR);
      quotaEnforcerSourcePairs.add(new Pair<>(enforcer, source));
    }
    return quotaEnforcerSourcePairs;
  }
Parse the json config for {@link QuotaEnforcer} and {@link QuotaSource} factory pair and return them in a {@link Map}.
@param quotaEnforcerSourceJson json config string.
@return List of {@link QuotaEnforcer} and {@link QuotaSource} factory {@link Pair}s.
ambry-quota/src/main/java/com/github/ambry/quota/AmbryQuotaManager.java