diff --git a/src/main/java/hudson/plugins/jira/JiraRestService.java b/src/main/java/hudson/plugins/jira/JiraRestService.java index ed89f1276..5bf492e7a 100644 --- a/src/main/java/hudson/plugins/jira/JiraRestService.java +++ b/src/main/java/hudson/plugins/jira/JiraRestService.java @@ -427,6 +427,6 @@ public String getBaseApiPath() { * */ public Permissions getMyPermissions() throws RestClientException { - return jiraRestClient.getMyPermissionsRestClient().getMyPermissions(null).claim(); + return jiraRestClient.getExtendedMyPermissionsRestClient().getMyPermissions().claim(); } } diff --git a/src/main/java/hudson/plugins/jira/extension/ExtendedAsynchronousJiraRestClient.java b/src/main/java/hudson/plugins/jira/extension/ExtendedAsynchronousJiraRestClient.java index 4695e5784..3dfa0f599 100644 --- a/src/main/java/hudson/plugins/jira/extension/ExtendedAsynchronousJiraRestClient.java +++ b/src/main/java/hudson/plugins/jira/extension/ExtendedAsynchronousJiraRestClient.java @@ -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; + } } \ No newline at end of file diff --git a/src/main/java/hudson/plugins/jira/extension/ExtendedAsynchronousMyPermissionsRestClient.java b/src/main/java/hudson/plugins/jira/extension/ExtendedAsynchronousMyPermissionsRestClient.java new file mode 100644 index 000000000..5aa715e59 --- /dev/null +++ b/src/main/java/hudson/plugins/jira/extension/ExtendedAsynchronousMyPermissionsRestClient.java @@ -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 getMyPermissions() { + final UriBuilder uriBuilder = UriBuilder.fromUri(baseUri).path(URI_PREFIX); + uriBuilder.queryParam("permissions", "BROWSE_PROJECTS"); + return getAndParse(uriBuilder.build(), permissionsJsonParser); + } +} diff --git a/src/main/java/hudson/plugins/jira/extension/ExtendedJiraRestClient.java b/src/main/java/hudson/plugins/jira/extension/ExtendedJiraRestClient.java index 000b17b5a..59c1ce514 100644 --- a/src/main/java/hudson/plugins/jira/extension/ExtendedJiraRestClient.java +++ b/src/main/java/hudson/plugins/jira/extension/ExtendedJiraRestClient.java @@ -4,4 +4,5 @@ public interface ExtendedJiraRestClient extends JiraRestClient { ExtendedVersionRestClient getExtendedVersionRestClient(); + ExtendedMyPermissionsRestClient getExtendedMyPermissionsRestClient(); } \ No newline at end of file diff --git a/src/main/java/hudson/plugins/jira/extension/ExtendedMyPermissionsRestClient.java b/src/main/java/hudson/plugins/jira/extension/ExtendedMyPermissionsRestClient.java new file mode 100644 index 000000000..8df44c871 --- /dev/null +++ b/src/main/java/hudson/plugins/jira/extension/ExtendedMyPermissionsRestClient.java @@ -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 getMyPermissions(); +}