String[] getOrderedMimeTypes(String acceptHeader) { String[] types = acceptHeader.split(","); if (types.length == 0) { return new String[] { types[0].split(";")[0] }; } Set<MimeType> mimes = new TreeSet<>(); for (String string : types) { mimes.add(convertToMimeType(string)); } return FluentIterable.from(mimes) .transform(mimeType()) .toArray(String.class); }
private String chooseMimeType(String acceptHeader) { String[] mimeTypes = getOrderedMimeTypes(acceptHeader); for (String mimeType : mimeTypes) { if (mimeToFormat.containsKey(mimeType)) { return mimeToFormat.get(mimeType); } } return mimeTypes[0]; }
private MimeType convertToMimeType(String string) { if (string.contains("*/*")) { return new MimeType("text/html", DEFAULT_QUALIFIER_VALUE); } else if (string.contains(";")) { String type = string.substring(0, string.indexOf(';')); return new MimeType(type, extractQualifier(string)); } return new MimeType(string, 1); }
@Before public void setup() { CacheStore<String, String> cache = new CacheStoreFactory().createCacheWrapper(100); mimeTypeToFormat = new DefaultAcceptHeaderToFormat(cache); }