package com.hubspot.singularity.jersey; import java.util.List; import javax.inject.Inject; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerRequestFilter; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MultivaluedMap; /** * Replaces language header containing es-419 (LATAM spanish) with es-ES. */ public class ReplaceES419LanguageFilter implements ContainerRequestFilter { public static final String ES_419 = "es-419"; public static final String ES_ES = "es-ES"; @Inject ReplaceES419LanguageFilter() {} @Override public void filter(ContainerRequestContext request) { MultivaluedMap<String, String> headers = request.getHeaders(); if (headers.containsKey(HttpHeaders.ACCEPT_LANGUAGE)) { List<String> acceptLanguageValues = headers.remove(HttpHeaders.ACCEPT_LANGUAGE); for (int i = 0; i < acceptLanguageValues.size(); i++) { final String acceptLanguageValue = acceptLanguageValues.get(i); // replace es-419 (invalid) with es_ES (valid, hopefully good enough.) if (acceptLanguageValue.contains(ES_419)) { acceptLanguageValues.set(i, acceptLanguageValue.replace(ES_419, ES_ES)); } } headers.put(HttpHeaders.ACCEPT_LANGUAGE, acceptLanguageValues); } } }