package com.netflix.appinfo; import java.util.HashMap; import java.util.Map; import com.netflix.discovery.converters.wrappers.CodecWrappers; import com.netflix.discovery.converters.wrappers.CodecWrappers.JacksonJson; import com.netflix.discovery.converters.wrappers.CodecWrappers.JacksonJsonMini; import com.netflix.discovery.converters.wrappers.CodecWrappers.JacksonXml; import com.netflix.discovery.converters.wrappers.CodecWrappers.JacksonXmlMini; import com.netflix.discovery.converters.wrappers.CodecWrappers.LegacyJacksonJson; import com.netflix.discovery.converters.wrappers.CodecWrappers.XStreamJson; import com.netflix.discovery.converters.wrappers.CodecWrappers.XStreamXml; import com.netflix.discovery.converters.wrappers.DecoderWrapper; /** * @author David Liu */ public enum EurekaAccept { full, compact; public static final String HTTP_X_EUREKA_ACCEPT = "X-Eureka-Accept"; private static final Map<String, EurekaAccept> decoderNameToAcceptMap = new HashMap<>(); static { decoderNameToAcceptMap.put(CodecWrappers.getCodecName(LegacyJacksonJson.class), full); decoderNameToAcceptMap.put(CodecWrappers.getCodecName(JacksonJson.class), full); decoderNameToAcceptMap.put(CodecWrappers.getCodecName(XStreamJson.class), full); decoderNameToAcceptMap.put(CodecWrappers.getCodecName(XStreamXml.class), full); decoderNameToAcceptMap.put(CodecWrappers.getCodecName(JacksonXml.class), full); decoderNameToAcceptMap.put(CodecWrappers.getCodecName(JacksonJsonMini.class), compact); decoderNameToAcceptMap.put(CodecWrappers.getCodecName(JacksonXmlMini.class), compact); } public static EurekaAccept getClientAccept(DecoderWrapper decoderWrapper) { return decoderNameToAcceptMap.get(decoderWrapper.codecName()); } public static EurekaAccept fromString(String name) { if (name == null || name.isEmpty()) { return full; } try { return EurekaAccept.valueOf(name.toLowerCase()); } catch (Exception e) { return full; } } }