From daed1c08c8f31050e8a2ece74f6769a2134be9da Mon Sep 17 00:00:00 2001 From: Mauro Javier Giamberardino Date: Tue, 28 Jun 2022 14:25:02 -0300 Subject: [PATCH] Fix access by array position in --- .../v3/parser/reference/ReferenceUtils.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/ReferenceUtils.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/ReferenceUtils.java index 3123d073cb..be0b1e005f 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/ReferenceUtils.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/ReferenceUtils.java @@ -136,12 +136,17 @@ public static JsonNode jsonPointerEvaluate(String fragment, JsonNode tree, Strin String[] tokens = fragment.split("/"); JsonNode node = tree; for (String token : tokens) { - if (StringUtils.isNotBlank(token)) { + if (StringUtils.isBlank(token)) { + continue; + } + if (node.isArray()) { + node = node.get(Integer.valueOf(token)); + } else { node = node.get(ReferenceUtils.unescapePointer(token)); - //if at any point we do find an element we expect, print and error and abort - if (node == null) { - throw new RuntimeException("Could not find " + fragment + " in contents of " + uri); - } + } + //if at any point we do find an element we expect, print and error and abort + if (node == null) { + throw new RuntimeException("Could not find " + fragment + " in contents of " + uri); } } return node;