Всем привет!
У меня есть SAAS проект, на нем я решил использовать hibernate validation (4.3.0.Final).
Проблема в том, что мой SAAS по сути предоставляет только API и клиентам надо понимать - что за ошибка пришла в ответ на их запрос. Кидать в ответ текст, типа "%field% must be not null" или "javax.validation.constraints.NotNull.message" считаю неверно, так как в первом варианте, юзать вобще невозможно, во втором как-то не прикольно, так как сильно зависит от реализации. В общем-то только какие-то константы или перечисления позволят клиенту точно понимать что пришло в ответ.
Подумал, что можно реализовать что-то вроде того, что есть у гугла в одной из из систем (
https://developers.google.com/adwords/api/docs/ref...
В связи с этим подумал как-то enum-ы заюзать вместо message.
Но что-то вроде:
@NotNull(message = MaterialType.IMAGE)
Естественно java делать не дает, так как стандартный NotNull предполагает String в message.
После подумал о классе с статическими свойствами:
public static class Constants {
public static final String IMAGE = "IMAGE";
}
но мне и это показалось неудачным вариантом.
На уме несколько решений проблемы:
1) Свой валидатор для всех моделей
2) Изощрения с хранением "public static final String IMAGE = "IMAGE";"
3) Свои реализации NotNull, и пр. стандартных, где можно будет указать ту самую константу ошибки
Ни один из вариантов не впечатляет реализацией, при этом написание своего вообще как бы практически не рассматриваю, так как сперва хочется понять, что по-другому ну вообще никак.
В итоге должно получиться что-то вроде - список ошибок(структур):
* fieldPath - поле, вызвавшее ошибку
* trigger - что именно вызвало ошибку
* errorString - текст ошибки для понятности
* type - тот самый enum типа (NOT_NULL, MIN и пр)
Посоветуйте пожалуйста как решить проблему, уверен, что она, так скажем, не нова.