package io.cattle.platform.servicediscovery.api.service.impl;
import io.cattle.platform.servicediscovery.api.resource.ServiceDiscoveryConfigItem;
import io.cattle.platform.servicediscovery.api.service.RancherConfigToComposeFormatter;
import io.cattle.platform.util.type.NamedUtils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.inject.Named;
@Named
public class RancherGenericMapToComposeFormatter implements RancherConfigToComposeFormatter {
@Override
public Object format(ServiceDiscoveryConfigItem item, Object valueToTransform) {
if (!(item.getDockerName().equalsIgnoreCase(ServiceDiscoveryConfigItem.LB_CONGFIG.getDockerName()) || item
.getDockerName().equals(ServiceDiscoveryConfigItem.HEALTHCHECK.getDockerName()))) {
return null;
}
valueToTransform = lowerCaseParameters(valueToTransform);
return valueToTransform;
}
@SuppressWarnings("unchecked")
private Object lowerCaseParameters(Object valueToTransform) {
// lower case all the parameters
if (valueToTransform instanceof Map) {
Map<String, Object> map = (Map<String, Object>)valueToTransform;
Iterator<String> it = map.keySet().iterator();
Map<String, Object> newMap = new HashMap<>();
while (it.hasNext()) {
String key = it.next();
if (map.get(key) instanceof Map) {
lowerCaseParameters(map.get(key));
}
if (map.get(key) != null) {
newMap.put(NamedUtils.toUnderscoreSeparated(key), map.get(key));
}
it.remove();
}
map.putAll(newMap);
}
return valueToTransform;
}
}