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;
}