aboutsummaryrefslogtreecommitdiffstats
path: root/cps-service/src/main/java/org/onap/cps/utils/YangParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'cps-service/src/main/java/org/onap/cps/utils/YangParser.java')
-rw-r--r--cps-service/src/main/java/org/onap/cps/utils/YangParser.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/utils/YangParser.java b/cps-service/src/main/java/org/onap/cps/utils/YangParser.java
index 6299ef39f4..dc23c6bc4a 100644
--- a/cps-service/src/main/java/org/onap/cps/utils/YangParser.java
+++ b/cps-service/src/main/java/org/onap/cps/utils/YangParser.java
@@ -1,6 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2024 Nordix Foundation.
+ * Modifications Copyright (C) 2024 TechMahindra Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,20 +22,25 @@
package org.onap.cps.utils;
import io.micrometer.core.annotation.Timed;
+import java.util.Map;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.onap.cps.api.impl.YangTextSchemaSourceSetCache;
import org.onap.cps.spi.exceptions.DataValidationException;
import org.onap.cps.spi.model.Anchor;
+import org.onap.cps.yang.TimedYangTextSchemaSourceSetBuilder;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.springframework.stereotype.Service;
+@Slf4j
@Service
@RequiredArgsConstructor
public class YangParser {
private final YangParserHelper yangParserHelper;
private final YangTextSchemaSourceSetCache yangTextSchemaSourceSetCache;
+ private final TimedYangTextSchemaSourceSetBuilder timedYangTextSchemaSourceSetBuilder;
/**
* Parses data into (normalized) ContainerNode according to schema context for the given anchor.
@@ -58,11 +64,33 @@ public class YangParser {
return yangParserHelper.parseData(contentType, nodeData, schemaContext, parentNodeXpath);
}
+ /**
+ * Parses data into (normalized) ContainerNode according to schema context for the given yang resource.
+ *
+ * @param nodeData data string
+ * @param yangResourcesNameToContentMap yang resource to content map
+ * @return the NormalizedNode object
+ */
+ @Timed(value = "cps.utils.yangparser.nodedata.with.parent.with.yangResourceMap.parse",
+ description = "Time taken to parse node data with a parent")
+ public ContainerNode parseData(final ContentType contentType,
+ final String nodeData,
+ final Map<String, String> yangResourcesNameToContentMap,
+ final String parentNodeXpath) {
+ final SchemaContext schemaContext = getSchemaContext(yangResourcesNameToContentMap);
+ return yangParserHelper.parseData(contentType, nodeData, schemaContext, parentNodeXpath);
+ }
+
private SchemaContext getSchemaContext(final Anchor anchor) {
return yangTextSchemaSourceSetCache.get(anchor.getDataspaceName(),
anchor.getSchemaSetName()).getSchemaContext();
}
+ private SchemaContext getSchemaContext(final Map<String, String> yangResourcesNameToContentMap) {
+ return timedYangTextSchemaSourceSetBuilder.getYangTextSchemaSourceSet(yangResourcesNameToContentMap)
+ .getSchemaContext();
+ }
+
private void invalidateCache(final Anchor anchor) {
yangTextSchemaSourceSetCache.removeFromCache(anchor.getDataspaceName(), anchor.getSchemaSetName());
}