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