продолжить с кодом, когда пользователь успешно аутентифицирован - PullRequest
0 голосов
/ 21 мая 2018

Я создаю приложение на Java и использую jGit (продолжение , как авторизовать пользователя с помощью jGit ).В настоящее время я могу выделить исключения: я получаю not authorized, если пользователь вводит недействительные учетные данные, и repository not found, если у пользователя нет доступа к объявленному репо.Теперь моя проблема в том, что пользователь проходит аутентификацию, так как у пользователя нет доступа к репо, выдается второе исключение.Но здесь я хочу обработать это в другом классе, т.е. я хочу, чтобы этот класс только обрабатывал аутентификацию пользователя.Ниже мой код

import java.io.File;

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;

public class AuthenticateanUser {

    public static void main(String[] args) throws Exception {
        final String REMOTE_URL = "https://myRepo.git";
        // prepare a new folder for the cloned repository
        File localPath = File.createTempFile("TestGitRepository", "");
        localPath.delete();
        // then clone
        try (Git result = Git.cloneRepository().setURI(REMOTE_URL)
                .setCredentialsProvider(new UsernamePasswordCredentialsProvider("myId", "myPwd"))
                .setDirectory(localPath).call()) {

            System.out.println("Having repository: " + result.status());
        } catch (Exception e) {
        if (e.getMessage().toLowerCase().contains("repository not found"))
            System.out.println("Exception Repo not found");
        else if (e.getMessage().toLowerCase().contains("not authorized"))
            System.out.println("Exception Invalid Credentials");
        else
            System.out.println(e);

    }
    }

}

, пожалуйста, дайте мне знать, где я ошибаюсь и как я могу это исправить.

Спасибо

1 Ответ

0 голосов
/ 21 мая 2018

Вы должны связывать исключения и не работать с классом исключений верхнего уровня. GitAPIException выбрасывается при клонировании.Вы можете сначала попытаться отловить возможные случаи и позволить основному исключению иметь дело с отдыхом.

public static <R>R handleClone(String uri,File local,boolean bare,Function<Git,R> fn){
  try {
    Git g=Git.cloneRepository().setURI(uri).setBare(bare).setDirectory(local).call();
    return handle(g,fn);
  }
 catch (  GitAPIException e) {
    throw new IllegalStateException(e);
  }
}

Пример цепочки исключений:

catch (  IOException e) {
    return new Status(IStatus.ERROR,GitActivator.PI_GIT,"Error cloning git repository",e);
  }
catch (  CoreException e) {
    return e.getStatus();
  }
catch (  GitAPIException e) {
    return getGitAPIExceptionStatus(e,"Error cloning git repository");
  }
catch (  JGitInternalException e) {
    return getJGitInternalExceptionStatus(e,"Error cloning git repository");
  }
catch (  Exception e) {
    return new Status(IStatus.ERROR,GitActivator.PI_GIT,"Error cloning git repository",e);
  }
  return Status.OK_STATUS;
}
...