public void updateConfig(ProvisionedFeatureDiffCallback featureDiffCallback, ProvisionedConfig updatedConfig, String... relativePaths) throws ProvisioningException {
final ConfigId configId = new ConfigId(updatedConfig.getModel(), updatedConfig.getName());
configPlugins = CollectionUtils.put(configPlugins, configId, featureDiffCallback);
if(featureDiff == null) {
featureDiff = new FeatureDiff(log);
}
featureDiff.init(getRequiredProvisionedConfig(provisionedState.getConfigs(), updatedConfig.getModel(), updatedConfig.getName()));
featureDiff.diff(featureDiffCallback, updatedConfig);
final ConfigModel mergedConfig = featureDiff.getMergedConfig(layout);
if (mergedConfig == null) {
log.verbose("%s has not changed", updatedConfig.getName());
} else {
updatedConfigs.put(configId, mergedConfig);
}
featureDiff.reset();
suppressPaths(relativePaths);
}