From ed33b271b981772e941555daf5b57b211f9df3e1 Mon Sep 17 00:00:00 2001 From: Sreejit-K Date: Mon, 29 Jan 2024 15:04:12 +0530 Subject: [PATCH] Added regex check for reference entity --- .../main/java/dev/sunbirdrc/registry/dao/VertexReader.java | 4 +++- .../sunbirdrc/registry/service/ElasticSearchService.java | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/java/registry/src/main/java/dev/sunbirdrc/registry/dao/VertexReader.java b/java/registry/src/main/java/dev/sunbirdrc/registry/dao/VertexReader.java index 6a204f87f..fcae8748c 100644 --- a/java/registry/src/main/java/dev/sunbirdrc/registry/dao/VertexReader.java +++ b/java/registry/src/main/java/dev/sunbirdrc/registry/dao/VertexReader.java @@ -497,7 +497,9 @@ public JsonNode readInternal(Vertex rootVertex) throws Exception { private void expandReferenceNodes(ObjectNode rootNode) { rootNode.fields().forEachRemaining(entry -> { - if(entry.getValue().isValueNode() && entry.getValue().asText().startsWith(DID_TYPE)) { + // Regex pattern to check for a DID + String pattern = "^"+ DID_TYPE+":[^:]+:[^:]+"; + if(entry.getValue().isValueNode() && entry.getValue().asText().matches(pattern)) { String[] dids = entry.getValue().asText().split(":"); String osid = RecordIdentifier.parse(dids[2]).getUuid(); Iterator vertexIterator = graph.traversal().clone().V().hasLabel(dids[1]).has(uuidPropertyName, osid); diff --git a/java/registry/src/main/java/dev/sunbirdrc/registry/service/ElasticSearchService.java b/java/registry/src/main/java/dev/sunbirdrc/registry/service/ElasticSearchService.java index 5afa0ed43..a0359cce4 100644 --- a/java/registry/src/main/java/dev/sunbirdrc/registry/service/ElasticSearchService.java +++ b/java/registry/src/main/java/dev/sunbirdrc/registry/service/ElasticSearchService.java @@ -31,6 +31,7 @@ import dev.sunbirdrc.registry.middleware.util.Constants; import dev.sunbirdrc.registry.util.RecordIdentifier; +import static dev.sunbirdrc.registry.middleware.util.Constants.DID_TYPE; import static dev.sunbirdrc.registry.middleware.util.Constants.ENTITY_TYPE; /** @@ -126,7 +127,8 @@ private ArrayNode expandReference(JsonNode searchedNode) { for (JsonNode node : arrayNode) { ObjectNode objectNode = (ObjectNode) node; objectNode.fields().forEachRemaining(objectField -> { - if(objectField.getValue().asText().startsWith("did:")) { + String pattern = "^"+ DID_TYPE+":[^:]+:[^:]+"; + if(objectField.getValue().asText().matches(pattern)) { String[] referenceStrSplit = objectField.getValue().asText().split(":"); String indexName = referenceStrSplit[1].toLowerCase(); String osid = referenceStrSplit[2]; @@ -185,7 +187,7 @@ private SearchQuery getSearchQuery(String entityName, String osid) throws JsonPr private SearchQuery getSearchQuery(String entityName, List osids) throws JsonProcessingException { ArrayNode osidsArrayNode = JsonNodeFactory.instance.arrayNode(); for (String osid: osids) { - osidsArrayNode.add(osid); + osidsArrayNode.add("1-"+osid); } ObjectNode objectNode = JsonNodeFactory.instance.objectNode(); ObjectNode conditionNode = JsonNodeFactory.instance.objectNode();