1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-11-06 09:09:19 +02:00

rework config merge

This commit is contained in:
Christopher Fenner
2018-02-07 12:07:52 +01:00
parent 6300008fe2
commit 87a3a77f44

View File

@@ -6,23 +6,18 @@ import com.sap.piper.MapUtils
class ConfigurationMerger {
@NonCPS
def static merge(Map configs, List configKeys, Map defaults=[:]) {
return merge(configs, MapUtils.fromList(configKeys), defaults)
}
@NonCPS
def static merge(Map configs, Map configKeys, Map defaults = [:]) {
def static merge(Map configs, List configKeys, Map defaults) {
Map filteredConfig = configKeys?configs.subMap(configKeys):configs
Map merged = [:]
merged.putAll(defaults)
if(configs != null && configKeys){
configs = configs.subMap(configKeys.keySet())
for(String key : configKeys.keySet())
if(MapUtils.isMap(configKeys[key]))
merged[key] = merge(configs[key], configKeys[key], defaults[key])
else if(configs[key] != null)
merged[key] = configs[key]
}
for(String key : filteredConfig.keySet())
if(MapUtils.isMap(filteredConfig[key]))
merged[key] = merge(filteredConfig[key], null, defaults[key])
else if(filteredConfig[key] != null)
merged[key] = filteredConfig[key]
// else: keep defaults value and omit null values from config
return merged
}
@@ -31,18 +26,6 @@ class ConfigurationMerger {
Map parameters, List parameterKeys,
Map configuration, List configurationKeys,
Map defaults=[:]
){
return merge(
parameters, MapUtils.fromList(parameterKeys),
configuration, MapUtils.fromList(configurationKeys),
defaults)
}
@NonCPS
def static merge(
Map parameters, Map parameterKeys,
Map configuration, Map configurationKeys,
Map defaults=[:]
){
Map merged
merged = merge(configuration, configurationKeys, defaults)
@@ -56,28 +39,11 @@ class ConfigurationMerger {
Map configurationMap, List configurationKeys,
Map stepDefaults=[:]
){
Map merged = [:]
merged.putAll(stepDefaults)
merged.putAll(filterByKeyAndNull(configurationMap, configurationKeys))
merged.putAll(pipelineDataMap)
merged.putAll(filterByKeyAndNull(parameters, parameterKeys))
Map merged
merged = merge(configurationMap, configurationKeys, stepDefaults)
merged = merge(pipelineDataMap, null, merged)
merged = merge(parameters, parameterKeys, merged)
return merged
}
@NonCPS
private static filterByKeyAndNull(Map map, List keys) {
Map filteredMap = map.findAll {
if(it.value == null){
return false
}
return true
}
if(keys == null) {
return filteredMap
}
return filteredMap.subMap(keys)
}
}