¿Cómo pasar el parámetro a JsonSerializer?
Tengo un servicio de datos simple:
@GET
public Data getData(@QueryParam("id") Long id) {
Data data = dataService.getData(id);
return data;
}
Y una coincidenciaDataSerializer
que implementaJsonSerializer<Data>
: LosDataSerializer
está registrado en Jackson a través de:
simpleModule.addSerializer(Data.class , dataSerializer);
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(simpleModule);
Funciona bien. Pero hoy, quiero agregar otroLocale
parámetro, y espero que elDataSerializer
para dar salida al contenido correspondiente:
@GET
public Data getData(@QueryParam("id") Long id , @QueryParam("locale") Locale locale)
Los 'Data
'en sí contiene varias variaciones de configuración regional, y espero que e obtenga la salida de configuración regional asignada.
Pero cuando recibo ellocale
desde el parámetro, no sé cómo pasar ellocale
valor para elDataSerializer
…
¿Hay alguna forma de lograr esto?
Excepto esta solución:
Data data = dataService.getData(id.get() , locale);
que no es lo que quiero
PareceThreadLocal
es la única forma de lograr esto, pero siento que es feo. ¿Alguna otra solución factible?
Gracias.
Entornos: dropwizard-0.7.0-rc2, jackson-core: jar: 2.3.1
===================== actualizado ==========
responde a @ andrei-i:
Porque mis datos ya contienen varias versiones locales. por ejemplo :
Data helloData = dataService.get("hello");
helloData.getName(Locale.English) == "Hello";
helloData.getName(Locale.France) == "Bonjour";
helloData.getName(Locale.Germany) == "Hallo";
Quiero pasar directamente la configuración regional de la URL a JsonSerializer, para obtener una versión de la presentación de datos.
Y 'puede' haber otra versión (no solo la configuración regional), por lo que no se considera heredar la mezcla de datos.