@Override
  public RestRequestService getRestRequestService() {
    try {
      IdSigningService idSigningService =
          Utils.<IdSigningServiceFactory>getObj(frontendConfig.idSigningServiceFactory, verifiableProperties,
              clusterMap.getMetricRegistry()).getIdSigningService();
      NamedBlobDb namedBlobDb = Utils.isNullOrEmpty(frontendConfig.namedBlobDbFactory) ? null
          : Utils.<NamedBlobDbFactory>getObj(frontendConfig.namedBlobDbFactory, verifiableProperties,
              clusterMap.getMetricRegistry(), accountService).getNamedBlobDb();
      IdConverterFactory idConverterFactory =
          Utils.getObj(frontendConfig.idConverterFactory, verifiableProperties, clusterMap.getMetricRegistry(),
              idSigningService, namedBlobDb);
      UrlSigningService urlSigningService =
          Utils.<UrlSigningServiceFactory>getObj(frontendConfig.urlSigningServiceFactory, verifiableProperties,
              clusterMap).getUrlSigningService();
      AccountAndContainerInjector accountAndContainerInjector =
          new AccountAndContainerInjector(accountService, frontendMetrics, frontendConfig);
      AccountStatsStore accountStatsStore =
          Utils.<AccountStatsStoreFactory>getObj(frontendConfig.accountStatsStoreFactory, verifiableProperties,
              clusterMapConfig, clusterMap.getMetricRegistry()).getAccountStatsStore();
      QuotaConfig quotaConfig = new QuotaConfig(verifiableProperties);
      QuotaManager quotaManager = ((QuotaManagerFactory) Utils.getObj(quotaConfig.quotaManagerFactory, quotaConfig,
          new SimpleQuotaRecommendationMergePolicy(quotaConfig), accountService, accountStatsStore,
          clusterMap.getMetricRegistry(), new RouterConfig(verifiableProperties))).getQuotaManager();
      SecurityServiceFactory securityServiceFactory =
          Utils.getObj(frontendConfig.securityServiceFactory, verifiableProperties, clusterMap, accountService,
              urlSigningService, idSigningService, accountAndContainerInjector, quotaManager);
      return new FrontendRestRequestService(frontendConfig, frontendMetrics, router, clusterMap, idConverterFactory,
          securityServiceFactory, urlSigningService, idSigningService,
          Utils.isNullOrEmpty(frontendConfig.namedBlobDbFactory) ? null : router.getIdConverter().getNamedBlobDb(),
          accountService, accountAndContainerInjector, clusterMapConfig.clusterMapDatacenterName,
          clusterMapConfig.clusterMapHostName, clusterMapConfig.clusterMapClusterName, accountStatsStore, quotaManager);
    } catch (Exception e) {
      throw new IllegalStateException("Could not instantiate FrontendRestRequestService", e);
    }
  }
Returns a new instance of {@link FrontendRestRequestService}.
@return a new instance of {@link FrontendRestRequestService}.
ambry-frontend/src/main/java/com/github/ambry/frontend/FrontendRestRequestServiceFactory.java