Я по всей вероятности пошел бы для чего-то как:
class SomeClass {
public int authenticate (Client client) {
//returns 0 if success otherwise one value per possible failure
}
public String getAuthenticationResultMessage (int authenticateResult) {}
//returns message associated to authenticateResult
}
С этим "дизайном", можно попросить сообщение только, когда аутентификация перестала работать (который я надеюсь, сценарий, который происходит 99,99% времени;))
Это может также иметь хорошую практику для делегирования разрешения сообщения к другому Классу. Но это зависит Ваших потребностей приложения (главным образом, этому нужен i18n?)
У меня была точно такая же проблема.
Решение для меня было неясным, но тривиальным.
Я просто изменил корневой каталог моего клиентского рабочего пространства с «C: \ depot» на "c: \ depot".
Да, верно, все, что я сделал, это изменил букву диска с верхнего на нижний. И, да, я подтвердил, что изменение буквы диска обратно на верхний регистр снова ломает его, и что изменение буквы диска обратно на нижний регистр снова исправляет это. Так что это не просто совпадение.
Это почти наверняка ошибка в функции согласования Perforce.
Если вы внимательно посмотрите на согласованные пути, все они отображаются со строчной буквой диска, даже если вы укажете заглавная буква диска, поэтому я предполагаю, что алгоритм сопоставления просто выполняет сравнение путей к файлам с учетом регистра. Это подходит для всего, кроме буквы диска. Их список файлов, вероятно, всегда устанавливает букву диска в нижний регистр, поэтому заглавная буква диска в корне клиентской рабочей области никогда не будет совпадать.
Иногда такое случается. Мне кажется, что проблема может возникнуть, если я каким-то образом изменю вид рабочего пространства и / или обновлю P4V до новой версии. Итак, решение, которое сработало для меня в прошлом, заключалось в том, чтобы выбросить проблемную рабочую область и создать новую (иногда нужно выбирать другое имя).
Возможно, удаление .p4qt и .p4scc в домашнем каталоге вашего пользователя может помочь тоже.
Между прочим, некоторое время назад я разговаривал со службой поддержки Perforce на эту тему, и поскольку подобные проблемы очень трудно воспроизвести, они мало что могли сделать.