Seguí this post y creado por el primer proveedor inyectable personalizado, un LocaleProvider
que escanea la solicitud HTTP para el encabezado Accept-Language. Trabaja muy bien si lo uso en un recurso Jersey:Jersey: cómo usar InjectableProvider con @Context Annotation?
@Path("test")
@GET
public Response getStatus(@Context Locale locale) {
log.finer("Locale: "+ locale);
Response response = Response
.noContent()
.build();
return response;
}
Pero cuando quiero utilizarlo en un ExceptionMapper
No sé cómo inyectar la configuración regional. He tratado de hacer anotaciones como una variable miembro:
public class MyExceptionMapper implements ExceptionMapper<MyException> {
@Context
private Locale locale;
@Override
public Response toResponse(MyException ex) {
...
}
}
pero esta falla en la implementación:
The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Missing dependency for field: private java.util.Locale com.package.MyExceptionMapper.locale
otras cosas como UriInfo
o HttpServletRequest
puedo ser inyectado por el estilo. ¿Cómo obtengo acceso a mi propio LocaleProvider?
FYI esto está en Glassfish 3.1.1 usando Jersey 1.8.
Hola Hank, ¿alguna vez lograste que este LocaleProvider funcionara con un ExceptionMapper? –
No. Implementé detección local en el ExceptionMapper. Probablemente debería cerrar esta pregunta ... – Hank