Merge "Add json schema for events"
diff --git a/cps-dependencies/pom.xml b/cps-dependencies/pom.xml
index 16a6532..afe4de0 100755
--- a/cps-dependencies/pom.xml
+++ b/cps-dependencies/pom.xml
@@ -45,8 +45,8 @@
<spock-core.version>2.0-M5-groovy-3.0</spock-core.version>
<spock-spring.version>2.0-M5-groovy-3.0</spock-spring.version>
<spotbugs.version>4.2.0</spotbugs.version>
- <springboot.version>2.3.8.RELEASE</springboot.version>
- <springboot.cloud.version>Hoxton.SR9</springboot.cloud.version>
+ <springboot.version>2.5.0</springboot.version>
+ <springboot.cloud.version>2020.0.2</springboot.cloud.version>
<springfox.version>3.0.0</springfox.version>
<swagger.version>2.1.4</swagger.version>
<testcontainers.version>1.15.1</testcontainers.version>
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
index bdb71bf..5aadb3f 100755
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
@@ -60,7 +60,7 @@
@Override
public void createDataNode(final String cmHandle, final String parentNodeXpath, final String jsonData) {
- if (StringUtils.isEmpty(parentNodeXpath) || "/".equals(parentNodeXpath)) {
+ if (!StringUtils.hasText(parentNodeXpath) || "/".equals(parentNodeXpath)) {
cpsDataService.saveData(getDataspaceName(), cmHandle, jsonData);
} else {
cpsDataService.saveData(getDataspaceName(), cmHandle, parentNodeXpath, jsonData);
diff --git a/cps-parent/pom.xml b/cps-parent/pom.xml
index 18addd7..78a89f0 100755
--- a/cps-parent/pom.xml
+++ b/cps-parent/pom.xml
@@ -62,8 +62,12 @@
../cps-service/target/site/jacoco-aggregate/jacoco.xml,
../cps-rest/target/site/jacoco-ut/jacoco.xml,
../cps-rest/target/site/jacoco-aggregate/jacoco.xml,
+ ../cps-ncmp-service/target/site/jacoco-ut/jacoco.xml,
+ ../cps-ncmp-service/target/site/jacoco-aggregate/jacoco.xml,
../cps-ncmp-rest/target/site/jacoco-ut/jacoco.xml,
../cps-ncmp-rest/target/site/jacoco-aggregate/jacoco.xml,
+ ../cps-path-parser/target/site/jacoco-ut/jacoco.xml,
+ ../cps-path-parser/target/site/jacoco-aggregate/jacoco.xml,
../cps-application/target/site/jacoco-ut/jacoco.xml,
../cps-application/target/site/jacoco-aggregate/jacoco.xml
</sonar.coverage.jacoco.xmlReportPaths>
diff --git a/cps-path-parser/src/main/antlr4/org/onap/cps/cpspath/parser/antlr4/CpsPath.g4 b/cps-path-parser/src/main/antlr4/org/onap/cps/cpspath/parser/antlr4/CpsPath.g4
index 8609545..a4fd58e 100644
--- a/cps-path-parser/src/main/antlr4/org/onap/cps/cpspath/parser/antlr4/CpsPath.g4
+++ b/cps-path-parser/src/main/antlr4/org/onap/cps/cpspath/parser/antlr4/CpsPath.g4
@@ -25,7 +25,7 @@
ancestorPath: yangElement (SLASH yangElement)* ;
-cpsPathWithSingleLeafCondition: prefix singleValueCondition ;
+cpsPathWithSingleLeafCondition: prefix singleValueCondition postfix? ;
/*
No need to ditinguish between cpsPathWithDescendant | cpsPathWithDescendantAndLeafConditions really!
@@ -40,6 +40,8 @@
prefix: (SLASH yangElement)* SLASH containerName ;
+postfix: (SLASH yangElement)+ ;
+
yangElement: containerName listElementRef? ;
containerName: QName ;
diff --git a/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathBuilder.java b/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathBuilder.java
index 83e076d..afe01f6 100644
--- a/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathBuilder.java
+++ b/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathBuilder.java
@@ -1,4 +1,3 @@
-package org.onap.cps.cpspath.parser;
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation
@@ -18,6 +17,8 @@
* ============LICENSE_END=========================================================
*/
+package org.onap.cps.cpspath.parser;
+
import java.util.HashMap;
import java.util.Map;
import org.onap.cps.cpspath.parser.antlr4.CpsPathBaseListener;
@@ -27,6 +28,7 @@
import org.onap.cps.cpspath.parser.antlr4.CpsPathParser.CpsPathWithSingleLeafConditionContext;
import org.onap.cps.cpspath.parser.antlr4.CpsPathParser.LeafConditionContext;
import org.onap.cps.cpspath.parser.antlr4.CpsPathParser.MultipleValueConditionsContext;
+import org.onap.cps.cpspath.parser.antlr4.CpsPathParser.PostfixContext;
import org.onap.cps.cpspath.parser.antlr4.CpsPathParser.PrefixContext;
import org.onap.cps.cpspath.parser.antlr4.CpsPathParser.SingleValueConditionContext;
@@ -42,6 +44,11 @@
}
@Override
+ public void exitPostfix(final PostfixContext ctx) {
+ throw new IllegalStateException(String.format("Unsupported postfix %s encountered in CpsPath.", ctx.getText()));
+ }
+
+ @Override
public void exitLeafCondition(final LeafConditionContext ctx) {
Object comparisonValue = null;
if (ctx.IntegerLiteral() != null) {
diff --git a/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathQuery.java b/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathQuery.java
index 32fe0cb..1774e03 100644
--- a/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathQuery.java
+++ b/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathQuery.java
@@ -19,7 +19,6 @@
package org.onap.cps.cpspath.parser;
-
import java.util.Map;
import lombok.AccessLevel;
import lombok.Getter;
diff --git a/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathQuerySpec.groovy b/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathQuerySpec.groovy
index 0e7fc35..116c916 100644
--- a/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathQuerySpec.groovy
+++ b/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathQuerySpec.groovy
@@ -84,6 +84,7 @@
'end with descendant and more than one attribute separated by "or"' | '//child[@int-leaf=5 or @leaf-name="leaf value"]'
'missing attribute value' | '//child[@int-leaf=5 and @name]'
'incomplete ancestor value' | '//books/ancestor::'
+ 'unsupported postfix after single value condition (JIRA CPS-450)' | '/parent/child[@id=1]/somePostFix'
}
def 'Parse cps path using ancestor by schema node identifier with a #scenario.'() {