public static <T extends Configuration> T override(EnvironmentService environmentService, Long clusterId, ServiceConfigurations service, List<String> configNames, T configuration, Map<String, Function<String, String>> samOverrides) throws IOException, ServiceConfigurationNotFoundException, ServiceNotFoundException { for (String configName : configNames) { final ServiceConfiguration serviceConfig = environmentService.getServiceConfigurationByName( getServiceIdByClusterId(environmentService, clusterId, service), configName); if (serviceConfig != null) { final Map<String, String> configurationMap = serviceConfig.getConfigurationMap(); if (configurationMap != null) { for (Map.Entry<String, String> propKeyVal : configurationMap.entrySet()) { LOG.debug("Overriding property {}", propKeyVal); final String key = propKeyVal.getKey(); final String val = samOverrides.containsKey(key) ? getSamOverride(samOverrides, propKeyVal) : propKeyVal.getValue(); if (key != null && val != null) { configuration.set(key, val); LOG.debug("Set property {}={}", key, val); } else { LOG.warn("Skipping null key/val property {}", propKeyVal); } } } } else { throw new ServiceConfigurationNotFoundException("Required [" + configName + "] configuration not found for service [" + service.name() + "]"); } } return configuration; }