package org.ovirt.engine.core.utils.serialization.json; import java.util.HashMap; import java.util.Map; import org.codehaus.jackson.map.jsontype.impl.ClassNameIdResolver; import org.codehaus.jackson.map.type.TypeFactory; import org.codehaus.jackson.type.JavaType; public class JsonMapIdResolver extends ClassNameIdResolver { private static Map<String, String> relacementIds = new HashMap<>(); static { relacementIds.put("java.util.Collections$SingletonMap", "java.util.HashMap"); relacementIds.put("java.util.Collections$UnmodifiableMap", "java.util.HashMap"); } public JsonMapIdResolver() { this(null, null); } protected JsonMapIdResolver(JavaType baseType, TypeFactory typeFactory) { super(baseType, typeFactory); } @Override public String idFromValue(Object o) { String id = super.idFromValue(o); // return a replacement id if it exists return relacementIds.getOrDefault(id, id); } @Override public String idFromValueAndType(Object o, Class<?> aClass) { String id = super.idFromValueAndType(o, aClass); // return a replacement id if it exists return relacementIds.getOrDefault(id, id); } }