@@ -210,30 +210,46 @@ private List<Rating> processRatings(final JsonNode ratings) {
210210 if (ratings != null ) {
211211 if (ratings .isArray () && !ratings .isEmpty ()) {
212212 for (JsonNode rating : ratings ) {
213- ratingsList .add ( processRating (rating ));
213+ ratingsList .addAll ( processRatingIntermediate (rating ));
214214 }
215215 } else {
216- ratingsList .add ( processRating (ratings ));
216+ ratingsList .addAll ( processRatingIntermediate (ratings ));
217217 }
218218 }
219219 return ratingsList .isEmpty () ? null : ratingsList ;
220220 }
221221
222- private Rating processRating (final JsonNode ratingNode ) {
223- Rating rating = new Rating ();
222+ private List <Rating > processRatingIntermediate (final JsonNode ratingNode ) {
223+ List <Rating > ratingsList = new ArrayList <>();
224+
224225 JsonNode r = ratingNode .get (Vulnerability10 .RATING );
226+
225227 if (r != null ) {
226- if (r .get (Vulnerability10 .SCORE ) != null ) {
228+ if (r .isArray () && !r .isEmpty ()) {
229+ for (JsonNode rating : r ) {
230+ ratingsList .add (processRating (rating ));
231+ }
232+ } else {
233+ ratingsList .add (processRating (r ));
234+ }
235+ }
236+ return ratingsList ;
237+ }
238+
239+ private Rating processRating (final JsonNode ratingNode ) {
240+ Rating rating = new Rating ();
241+ if (ratingNode != null ) {
242+ if (ratingNode .get (Vulnerability10 .SCORE ) != null ) {
227243 Score score = new Score ();
228- JsonNode s = r .get (Vulnerability10 .SCORE );
244+ JsonNode s = ratingNode .get (Vulnerability10 .SCORE );
229245 score .setBase (getAsDouble (Vulnerability10 .BASE , s ));
230246 score .setImpact (getAsDouble (Vulnerability10 .IMPACT , s ));
231247 score .setExploitability (getAsDouble (Vulnerability10 .EXPLOITABILITY , s ));
232248 rating .setScore (score );
233249 }
234- rating .setSeverity (Severity .fromString (getAsString (Vulnerability10 .SEVERITY , r )));
235- rating .setMethod (ScoreSource .fromString (getAsString (Vulnerability10 .METHOD , r )));
236- rating .setVector (getAsString (Vulnerability10 .VECTOR , r ));
250+ rating .setSeverity (Severity .fromString (getAsString (Vulnerability10 .SEVERITY , ratingNode )));
251+ rating .setMethod (ScoreSource .fromString (getAsString (Vulnerability10 .METHOD , ratingNode )));
252+ rating .setVector (getAsString (Vulnerability10 .VECTOR , ratingNode ));
237253 }
238254
239255 return rating ;
0 commit comments