API, с которым я работаю, решил принять UUID как строки с кодировкой Base32 вместо стандартного шестнадцатеричного, разделенного штрихами формата, который UUID.fromString() ожидает. Это означает, что я не могу просто написать @QueryParam UUID myUuid в качестве параметра метода, поскольку преобразование завершилось с ошибкой.
Я работаю над этим, создавая пользовательский объект с другим конвертером fromString, который будет использоваться с аннотациями @QueryString и @FormParam. Я хотел бы иметь возможность получить доступ к контексту преобразования в методе fromString, чтобы я мог обеспечить лучшие сообщения об ошибках. Прямо сейчас, все, что я могу сделать, это следующее:
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);
}
Я хотел бы узнать, какой параметр имеет недопустимый UUID, поэтому мои зарегистрированные исключения и возвращенные пользовательские ошибки кристально чисты. В идеале мой метод преобразования будет иметь дополнительный параметр для деталей, например:
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);
}
Но это нарушит условное соглашение, что Джерси найдет метод синтаксического анализа:
- Имейте статический метод с именем
 valueOfилиfromString, который принимает один аргумент String (см., например,Integer.valueOf(String)иjava.util.UUID.fromString(String));
Я также посмотрел на ParamConverterProvider, который также может быть зарегистрирован для обеспечения преобразования, но, похоже, он не добавляет достаточного контекста. Ближе всего он представляет собой массив аннотаций, но из того, что я могу сказать об аннотации, вы не можете отступать оттуда, чтобы определить, какая переменная или метод аннотация включена. Я нашел this и эти примеры, но они не 't эффективно использовать параметр Annotations[] или выставлять любой контекст преобразования, который я могу видеть.
Есть ли способ получить эту информацию? Или мне нужно отступить к явному конверсионному вызову в моем методе конечных точек?
Если это имеет значение, я использую Dropwizard 0.8.0, который использует Jersey 2.16 и Jetty 9.2.9.v20150224.