Merge pull request #678 from Argelbargel/fix-655

Fixes NPE if GitLab connection fails
This commit is contained in:
Owen Mehegan 2018-01-15 17:16:27 +11:00 committed by GitHub
commit 8ccafe71ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 9 additions and 38 deletions

View File

@ -138,7 +138,7 @@ public class GitLabConnectionConfig extends GlobalConfiguration {
@QueryParameter int connectionTimeout, @QueryParameter int connectionTimeout,
@QueryParameter int readTimeout) { @QueryParameter int readTimeout) {
try { try {
new GitLabConnection("", url, apiTokenId, clientBuilderId, ignoreCertificateErrors, connectionTimeout, readTimeout).getClient().headCurrentUser(); new GitLabConnection("", url, apiTokenId, clientBuilderId, ignoreCertificateErrors, connectionTimeout, readTimeout).getClient().getCurrentUser();
return FormValidation.ok(Messages.connection_success()); return FormValidation.ok(Messages.connection_success());
} catch (WebApplicationException e) { } catch (WebApplicationException e) {
return FormValidation.error(Messages.connection_error(e.getMessage())); return FormValidation.error(Messages.connection_error(e.getMessage()));

View File

@ -36,8 +36,6 @@ public interface GitLabClient {
Branch getBranch(String projectId, String branch); Branch getBranch(String projectId, String branch);
void headCurrentUser();
User getCurrentUser(); User getCurrentUser();
User addUser(String email, String username, String name, String password); User addUser(String email, String username, String name, String password);

View File

@ -198,18 +198,6 @@ final class AutodetectingGitLabClient implements GitLabClient {
}); });
} }
@Override
public void headCurrentUser() {
execute(
new GitLabOperation<Void>() {
@Override
Void execute(GitLabClient client) {
client.headCurrentUser();
return null;
}
});
}
@Override @Override
public User getCurrentUser() { public User getCurrentUser() {
return execute( return execute(
@ -287,7 +275,7 @@ final class AutodetectingGitLabClient implements GitLabClient {
for (GitLabClientBuilder candidate : builders) { for (GitLabClientBuilder candidate : builders) {
GitLabClient client = candidate.buildClient(url, token, ignoreCertificateErrors, connectionTimeout, readTimeout); GitLabClient client = candidate.buildClient(url, token, ignoreCertificateErrors, connectionTimeout, readTimeout);
try { try {
client.headCurrentUser(); client.getCurrentUser();
return client; return client;
} catch (NotFoundException ignored) { } catch (NotFoundException ignored) {
// api-endpoint not found (== api-level not supported by this client) // api-endpoint not found (== api-level not supported by this client)

View File

@ -95,11 +95,6 @@ final class ResteasyGitLabClient implements GitLabClient {
return api.getBranch(projectId, branch); return api.getBranch(projectId, branch);
} }
@Override
public void headCurrentUser() {
api.headCurrentUser();
}
@Override @Override
public User getCurrentUser() { public User getCurrentUser() {
return api.getCurrentUser(); return api.getCurrentUser();

View File

@ -46,7 +46,7 @@ public class AutodetectingGitLabClientTest {
@Test @Test
public void buildClient_success_v3() throws Exception { public void buildClient_success_v3() throws Exception {
mockServerClient.when(v3Request).respond(responseOk()); mockServerClient.when(v3Request).respond(responseOk());
api.headCurrentUser(); api.getCurrentUser();
assertApiImpl(api, V3GitLabApiProxy.class); assertApiImpl(api, V3GitLabApiProxy.class);
mockServerClient.verify(v3Request, v3Request); mockServerClient.verify(v3Request, v3Request);
} }
@ -55,7 +55,7 @@ public class AutodetectingGitLabClientTest {
public void buildClient_success_v4() throws Exception { public void buildClient_success_v4() throws Exception {
mockServerClient.when(v3Request).respond(responseNotFound()); mockServerClient.when(v3Request).respond(responseNotFound());
mockServerClient.when(v4Request).respond(responseOk()); mockServerClient.when(v4Request).respond(responseOk());
api.headCurrentUser(); api.getCurrentUser();
assertApiImpl(api, V4GitLabApiProxy.class); assertApiImpl(api, V4GitLabApiProxy.class);
mockServerClient.verify(v3Request, v4Request, v4Request); mockServerClient.verify(v3Request, v4Request, v4Request);
} }
@ -64,12 +64,12 @@ public class AutodetectingGitLabClientTest {
public void buildClient_success_switching_apis() throws Exception { public void buildClient_success_switching_apis() throws Exception {
mockServerClient.when(v3Request, once()).respond(responseNotFound()); mockServerClient.when(v3Request, once()).respond(responseNotFound());
mockServerClient.when(v4Request, exactly(2)).respond(responseOk()); mockServerClient.when(v4Request, exactly(2)).respond(responseOk());
api.headCurrentUser(); api.getCurrentUser();
assertApiImpl(api, V4GitLabApiProxy.class); assertApiImpl(api, V4GitLabApiProxy.class);
mockServerClient.when(v4Request, once()).respond(responseNotFound()); mockServerClient.when(v4Request, once()).respond(responseNotFound());
mockServerClient.when(v3Request, exactly(2)).respond(responseOk()); mockServerClient.when(v3Request, exactly(2)).respond(responseOk());
api.headCurrentUser(); api.getCurrentUser();
assertApiImpl(api, V3GitLabApiProxy.class); assertApiImpl(api, V3GitLabApiProxy.class);
mockServerClient.verify(v3Request, v4Request, v4Request, v3Request, v3Request); mockServerClient.verify(v3Request, v4Request, v4Request, v3Request, v3Request);
@ -80,7 +80,7 @@ public class AutodetectingGitLabClientTest {
mockServerClient.when(v3Request).respond(responseNotFound()); mockServerClient.when(v3Request).respond(responseNotFound());
mockServerClient.when(v4Request).respond(responseNotFound()); mockServerClient.when(v4Request).respond(responseNotFound());
try { try {
api.headCurrentUser(); api.getCurrentUser();
fail("endpoint should throw exception when no matching delegate is found"); fail("endpoint should throw exception when no matching delegate is found");
} catch (NoSuchElementException e) { } catch (NoSuchElementException e) {
mockServerClient.verify(v3Request, v4Request); mockServerClient.verify(v3Request, v4Request);

View File

@ -19,7 +19,7 @@ import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import static javax.ws.rs.HttpMethod.HEAD; import static javax.ws.rs.HttpMethod.GET;
import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.NOT_FOUND;
import static javax.ws.rs.core.Response.Status.OK; import static javax.ws.rs.core.Response.Status.OK;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
@ -46,7 +46,7 @@ class TestUtility {
} }
static HttpRequest versionRequest(String id) { static HttpRequest versionRequest(String id) {
return request().withMethod(HEAD).withPath("/gitlab/api/" + id + "/.*").withHeader("PRIVATE-TOKEN", API_TOKEN); return request().withMethod(GET).withPath("/gitlab/api/" + id + "/.*").withHeader("PRIVATE-TOKEN", API_TOKEN);
} }
static HttpResponse responseOk() { static HttpResponse responseOk() {

View File

@ -139,11 +139,6 @@ class GitLabClientStub implements GitLabClient {
return null; return null;
} }
@Override
public void headCurrentUser() {
}
@Override @Override
public User getCurrentUser() { public User getCurrentUser() {
return null; return null;

View File

@ -88,11 +88,6 @@ class GitLabClientStub implements GitLabClient {
return null; return null;
} }
@Override
public void headCurrentUser() {
}
@Override @Override
public User getCurrentUser() { public User getCurrentUser() {
return null; return null;