¿Hay alguna manera de saber qué parámetro se analiza en un controlador Jersey @__Param desde el controlador de String?

La API con la que estoy trabajando ha decidido aceptar UUID como cadenas codificadas en Base32, en lugar del formato hexadecimal estándar separado por guiones queUUID.fromString() espera. Esto significa que no puedo simplemente escribir@QueryParam UUID myUuid como parámetro de método, ya que la conversión fallaría.

Estoy trabajando en esto escribiendo un objeto personalizado con un objeto diferentefromString convertidor para ser usado con el Jersey@QueryString y@FormParam anotaciones Me gustaría poder acceder al contexto de la conversión en elfromString método para que pueda proporcionar mejores mensajes de error. En este momento, todo lo que puedo hacer es lo siguiente:

public static Base32UUID fromString(String uuidString) {
    final UUID uuid = UUIDUtils.fromBase32(uuidString, false);
    if (null == uuid) {
        throw new InvalidParametersException(ImmutableList.of("Invalid uuid: " + uuidString));
    }
    return new Base32UUID(uuid);
}

Me gustaría poder exponercual El parámetro tenía el UUID no válido, por lo que mis excepciones registradas y los errores de usuario devueltos son muy claros. Idealmente, mi método de conversión tendría un parámetro adicional para detalles, como este:

public static Base32UUID fromString(
    String uuidString,
    String parameterName // New parameter?
) {
    final UUID uuid = UUIDUtils.fromBase32(uuidString, false);
    if (null == uuid) {
        throw new InvalidParametersException(ImmutableList.of("Invalid uuid: " + uuidString
            + " for parameter " + parameterName));
    }
    return new Base32UUID(uuid);
}

Pero esto rompería elpor convención significa que Jersey encuentra un método de análisis :

Tener un método estático llamadovalueOf ofromString que acepta un único argumento de cadena (ver, por ejemplo,Integer.valueOf(String) yjava.util.UUID.fromString(String));

También he mirado elParamConverterProvider eso también se puede registrar para proporcionar conversión, pero tampoco parece agregar suficiente contexto. Lo más cercano que proporciona es una serie de Anotaciones, pero por lo que puedo decir de la anotación, no puede retroceder desde allí para determinar en qué variable o método está la anotación. He encontradoesta yesta ejemplos, pero no hacen un uso efectivo deAnnotations[] parámetro o exponer cualquier contexto de conversión que pueda ver.

¿Hay alguna forma de obtener esta información? ¿O necesito recurrir a una llamada de conversión explícita en mi método de punto final?

Si hace la diferencia, estoy usando Dropwizard 0.8.0, que usa Jersey 2.16 y Jetty 9.2.9.v20150224.

Respuestas a la pregunta(2)

Su respuesta a la pregunta