diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java index 0b6b74e6a73..695a8828224 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java @@ -43,6 +43,7 @@ import jakarta.persistence.criteria.*; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.http.HttpResponse; import org.apache.http.HttpResponseInterceptor; import org.apache.http.client.methods.HttpGet; @@ -793,8 +794,18 @@ Object processPathSegment(int index, String[] pathParts, JsonValue curPath, Stri } } else { - curPath = ((JsonObject) curPath).get(pathParts[index]); - logger.fine("Found next Path object " + curPath); + if ((curPath instanceof JsonArray) && NumberUtils.isCreatable(pathParts[index])) { + try { + int indexNumber = Integer.parseInt(pathParts[index]); + curPath = ((JsonArray) curPath).get(indexNumber); + } catch (NumberFormatException nfe) { + logger.fine("Please provide a valid integer number " + pathParts[index]); + } + } else { + curPath = ((JsonObject) curPath).get(pathParts[index]); + } + // curPath = ((JsonObject) curPath).get(pathParts[index]); + logger.fine("Found next Path object " + ((curPath == null) ? "null" : curPath.toString())); return processPathSegment(index + 1, pathParts, curPath, termUri); } } else {