Skip to content

Commit 3bf3fdb

Browse files
authored
SYM-7166: fix for wrong fix version on issues with multiple. (#474)
1 parent 56ffbb5 commit 3bf3fdb

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

symmetric-db/src/main/java/org/jumpmind/db/io/ReleaseNotesGenerator.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ private static PageResult fetchIssuesPage(String url, String majorMinorVersion,
137137
if (conn.getResponseCode() != 200) {
138138
throw new RuntimeException("Failed : HTTP Error code : " + conn.getResponseCode());
139139
}
140-
return parsePageResult(readResponse(conn));
140+
return parsePageResult(majorMinorVersion, readResponse(conn));
141141
} finally {
142142
if (conn != null) {
143143
conn.disconnect();
@@ -180,9 +180,9 @@ private static String readResponse(HttpURLConnection conn) throws Exception {
180180
/**
181181
* Parses a page result containing issues and pagination info.
182182
*/
183-
private static PageResult parsePageResult(String json) {
183+
private static PageResult parsePageResult(String majorMinorVersion, String json) {
184184
JsonObject rootObject = new Gson().fromJson(json, JsonObject.class);
185-
List<Issue> issues = parseIssues(rootObject);
185+
List<Issue> issues = parseIssues(majorMinorVersion, rootObject);
186186
String nextPageToken = null;
187187
JsonElement nextPageTokenElement = rootObject.get("nextPageToken");
188188
if (nextPageTokenElement != null && !nextPageTokenElement.isJsonNull()) {
@@ -194,23 +194,23 @@ private static PageResult parsePageResult(String json) {
194194
/**
195195
* Parses and extracts issues from the root JSON object.
196196
*/
197-
private static List<Issue> parseIssues(JsonObject root) {
197+
private static List<Issue> parseIssues(String majorMinorVersion, JsonObject root) {
198198
List<Issue> issues = new ArrayList<>();
199199
JsonArray issuesArray = root.getAsJsonArray("issues");
200200
if (issuesArray == null || issuesArray.size() == 0) {
201201
System.out.println("WARNING: No issues found in response");
202202
return issues;
203203
}
204204
for (JsonElement issueElement : issuesArray) {
205-
issues.add(parseIssue(issueElement.getAsJsonObject()));
205+
issues.add(parseIssue(majorMinorVersion, issueElement.getAsJsonObject()));
206206
}
207207
return issues;
208208
}
209209

210210
/**
211211
* Parses a single issue from JSON.
212212
*/
213-
private static Issue parseIssue(JsonObject issueObj) {
213+
private static Issue parseIssue(String majorMinorVersion, JsonObject issueObj) {
214214
Issue issue = new Issue();
215215
issue.setId(getStringValue(issueObj, "key"));
216216
JsonObject fields = issueObj.getAsJsonObject("fields");
@@ -222,8 +222,18 @@ private static Issue parseIssue(JsonObject issueObj) {
222222
issue.setPriority(getNestedStringValue(fields, "priority", "name"));
223223
JsonArray fixVersions = fields.getAsJsonArray("fixVersions");
224224
if (fixVersions != null && fixVersions.size() > 0) {
225-
JsonObject firstVersion = fixVersions.get(0).getAsJsonObject();
226-
issue.setVersion(getStringValue(firstVersion, "name"));
225+
for (JsonElement issueFixVersionEle : fixVersions) {
226+
JsonObject issueFixVersionObj = issueFixVersionEle.getAsJsonObject();
227+
String issueFixVersion = getStringValue(issueFixVersionObj, "name");
228+
String[] versionParts = issueFixVersion.split("\\.");
229+
String fixVersionMajorMinor = versionParts.length >= 2
230+
? versionParts[0] + "." + versionParts[1]
231+
: issueFixVersion;
232+
if (majorMinorVersion.equals(fixVersionMajorMinor)) {
233+
issue.setVersion(issueFixVersion);
234+
break;
235+
}
236+
}
227237
}
228238
parseComponents(fields, issue);
229239
return issue;

0 commit comments

Comments
 (0)