@@ -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