diff --git a/ardcvocabs/src/main/java/au/org/aodn/ardcvocabs/service/ArdcVocabsService.java b/ardcvocabs/src/main/java/au/org/aodn/ardcvocabs/service/ArdcVocabsService.java index b7c8034e..600d281d 100644 --- a/ardcvocabs/src/main/java/au/org/aodn/ardcvocabs/service/ArdcVocabsService.java +++ b/ardcvocabs/src/main/java/au/org/aodn/ardcvocabs/service/ArdcVocabsService.java @@ -3,6 +3,7 @@ import au.org.aodn.ardcvocabs.model.CategoryVocabModel; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.node.TextNode; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.client.RestClientException; @@ -125,14 +126,22 @@ public List getParameterCategory(String vocabApiBase) { log.debug("Processing label {}", label.apply(j)); if (j.has("broader")) { for (JsonNode b : j.get("broader")) { - if (b.has("prefLabel") && b.has("_about")) { - CategoryVocabModel c = CategoryVocabModel - .builder() - .about(about.apply(b)) - .label(label.apply(b)) + CategoryVocabModel c = null; + if (b instanceof ObjectNode objectNode) { + if (objectNode.has("prefLabel") && objectNode.has("_about")) { + c = CategoryVocabModel + .builder() + .about(about.apply(b)) + .label(label.apply(b)) + .build(); + } + } + if (b instanceof TextNode textNode && textNode.asText().contains("parameter_classes")) { + c = CategoryVocabModel.builder() + .about(textNode.asText()) .build(); - broader.add(c); } + broader.add(c); } } @@ -185,6 +194,7 @@ public List getParameterCategory(String vocabApiBase) { url = null; } } + return result; } }