Skip to content

Commit

Permalink
bugfix: Can't validate credentials due to breaking change in JIRA [JE…
Browse files Browse the repository at this point in the history
…NKINS-60305] (#204)
  • Loading branch information
Benoit Guerin authored and olamy committed Jan 28, 2020
1 parent daa761e commit e4aa242
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/main/java/hudson/plugins/jira/JiraRestService.java
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,6 @@ public String getBaseApiPath() {
*
*/
public Permissions getMyPermissions() throws RestClientException {
return jiraRestClient.getMyPermissionsRestClient().getMyPermissions(null).claim();
return jiraRestClient.getExtendedMyPermissionsRestClient().getMyPermissions().claim();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,22 @@

public class ExtendedAsynchronousJiraRestClient extends AsynchronousJiraRestClient implements ExtendedJiraRestClient {
private final ExtendedVersionRestClient extendedVersionRestClient;
private final ExtendedMyPermissionsRestClient extendedMyPermissionsRestClient;

public ExtendedAsynchronousJiraRestClient(URI serverUri, DisposableHttpClient httpClient) {
super(serverUri, httpClient);
final URI baseUri = UriBuilder.fromUri(serverUri).path("/rest/api/latest").build();
extendedVersionRestClient = new ExtendedAsynchronousVersionRestClient(baseUri, httpClient);
extendedMyPermissionsRestClient = new ExtendedAsynchronousMyPermissionsRestClient(baseUri, httpClient);
}

@Override
public ExtendedVersionRestClient getExtendedVersionRestClient() {
return extendedVersionRestClient;
}

@Override
public ExtendedMyPermissionsRestClient getExtendedMyPermissionsRestClient() {
return extendedMyPermissionsRestClient;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package hudson.plugins.jira.extension;

import com.atlassian.httpclient.api.HttpClient;
import com.atlassian.jira.rest.client.api.domain.Permissions;
import com.atlassian.jira.rest.client.internal.async.AsynchronousMyPermissionsRestClient;
import com.atlassian.jira.rest.client.internal.json.PermissionsJsonParser;
import com.atlassian.util.concurrent.Promise;

import java.net.URI;

import javax.ws.rs.core.UriBuilder;

public class ExtendedAsynchronousMyPermissionsRestClient extends AsynchronousMyPermissionsRestClient
implements ExtendedMyPermissionsRestClient {

private static final String URI_PREFIX = "mypermissions";
private final URI baseUri;
private final PermissionsJsonParser permissionsJsonParser = new PermissionsJsonParser();

ExtendedAsynchronousMyPermissionsRestClient(final URI baseUri, final HttpClient client) {
super(baseUri, client);
this.baseUri = baseUri;
}

@Override
public Promise<Permissions> getMyPermissions() {
final UriBuilder uriBuilder = UriBuilder.fromUri(baseUri).path(URI_PREFIX);
uriBuilder.queryParam("permissions", "BROWSE_PROJECTS");
return getAndParse(uriBuilder.build(), permissionsJsonParser);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@

public interface ExtendedJiraRestClient extends JiraRestClient {
ExtendedVersionRestClient getExtendedVersionRestClient();
ExtendedMyPermissionsRestClient getExtendedMyPermissionsRestClient();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package hudson.plugins.jira.extension;

import com.atlassian.jira.rest.client.api.domain.Permissions;
import com.atlassian.util.concurrent.Promise;

public interface ExtendedMyPermissionsRestClient {

Promise<Permissions> getMyPermissions();
}

0 comments on commit e4aa242

Please sign in to comment.