Fix Jira issue not found After I9a0183b58, plugin was able to connect to a Jira server but failed to find or annotate issues. The method URL(context,spec) in JiraRestApi caused the issue: If the spec begins with a forward slash, it replaces the path provided in the passed URL context as a first parameter. This is fixed by appending the spec to the URL string and converting it directly into the URL. Bug: Issue 8263 Change-Id: I3ff701b25d9c69a4ebed88e3ff07f6390ea177a9
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApi.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApi.java index 9d7589d..1282dae 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApi.java +++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApi.java
@@ -14,12 +14,12 @@ package com.googlesource.gerrit.plugins.its.jira.restapi; +import com.google.common.annotations.VisibleForTesting; import com.google.gson.Gson; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; -import java.net.MalformedURLException; import java.net.Proxy; import java.net.ProxySelector; import java.net.URL; @@ -30,7 +30,7 @@ /** Jira Rest Client. */ public class JiraRestApi<T> { private static final String BASE_PREFIX = "rest/api/2"; - private final URL baseUrl; + private final String baseUrl; private final String auth; private final Gson gson; @@ -45,10 +45,9 @@ * @param user username of the jira user * @param pass password of the jira user */ - JiraRestApi(URL url, String user, String pass, Class<T> classOfT, String classPrefix) - throws MalformedURLException { + JiraRestApi(URL url, String user, String pass, Class<T> classOfT, String classPrefix) { this.auth = Base64.getEncoder().encodeToString((user + ":" + pass).getBytes()); - this.baseUrl = new URL(url, BASE_PREFIX + classPrefix); + this.baseUrl = url + BASE_PREFIX + classPrefix; this.gson = new Gson(); this.classOfT = classOfT; } @@ -80,7 +79,8 @@ return doGet(spec, passCode, null); } - URL getBaseUrl() { + @VisibleForTesting + String getBaseUrl() { return baseUrl; } @@ -97,7 +97,7 @@ private HttpURLConnection prepHttpConnection(String spec, boolean isPostRequest) throws IOException { - URL url = new URL(baseUrl, spec); + URL url = new URL(baseUrl + spec); ProxySelector proxySelector = ProxySelector.getDefault(); Proxy proxy = HttpSupport.proxyFor(proxySelector, url); HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiProvider.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiProvider.java index 3c4da25..c4c468d 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiProvider.java +++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiProvider.java
@@ -14,20 +14,19 @@ this.pass = pass; } - public <T> JiraRestApi<T> get(Class<T> classOfT, String classPrefix) - throws MalformedURLException { + public <T> JiraRestApi<T> get(Class<T> classOfT, String classPrefix) { return new JiraRestApi<>(url, user, pass, classOfT, classPrefix); } - public JiraRestApi<JiraIssue> getIssue() throws MalformedURLException { + public JiraRestApi<JiraIssue> getIssue() { return get(JiraIssue.class, "/issue"); } - public JiraRestApi<JiraServerInfo> getServerInfo() throws MalformedURLException { + public JiraRestApi<JiraServerInfo> getServerInfo() { return get(JiraServerInfo.class, "/serverInfo"); } - public JiraRestApi<JiraProject[]> getProjects() throws MalformedURLException { + public JiraRestApi<JiraProject[]> getProjects() { return get(JiraProject[].class, "/project"); } }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java index 77fb4bf..a789353 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java
@@ -12,7 +12,7 @@ JiraRestApi<JiraServerInfo> serverInfo = new JiraRestApiProvider(nonRootJiraUrl, "", "").getServerInfo(); - String jiraApiUrl = serverInfo.getBaseUrl().toString(); + String jiraApiUrl = serverInfo.getBaseUrl(); assertThat(jiraApiUrl).startsWith(nonRootJiraUrl); } @@ -22,7 +22,7 @@ JiraRestApi<JiraServerInfo> serverInfo = new JiraRestApiProvider(nonRootJiraUrl, "", "").getServerInfo(); - String jiraApiUrl = serverInfo.getBaseUrl().toString(); + String jiraApiUrl = serverInfo.getBaseUrl(); assertThat(jiraApiUrl).startsWith(nonRootJiraUrl); } @@ -32,7 +32,7 @@ JiraRestApi<JiraServerInfo> serverInfo = new JiraRestApiProvider(rootJiraUrl, "", "").getServerInfo(); - String jiraApiUrl = serverInfo.getBaseUrl().toString(); + String jiraApiUrl = serverInfo.getBaseUrl(); assertThat(jiraApiUrl).startsWith(rootJiraUrl); } }