cherry pick [ONOS-4986] [ONOS-4985] Json defect fix to master
Change-Id: Ia9ead1babf3de43e6f492f4f3b6f4d6b9377b042
diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java
index 034d045..7692c7d 100644
--- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java
+++ b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java
@@ -21,6 +21,8 @@
import org.onosproject.codec.JsonCodec;
import org.onosproject.pce.pceservice.PcePath;
import org.onosproject.pce.pceservice.DefaultPcePath;
+import org.onosproject.net.intent.constraint.BandwidthConstraint;
+import org.onosproject.pce.pceservice.constraint.CostConstraint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -70,6 +72,11 @@
jNode = json.get(LSP_TYPE);
if (jNode != null) {
String lspType = jNode.asText();
+ //Validating LSP type
+ int type = Integer.parseInt(lspType);
+ if ((type < 0) || (type > 2)) {
+ return null;
+ }
resultBuilder.lspType(lspType);
}
@@ -87,6 +94,11 @@
jNode = constraintJNode.get(COST);
if (jNode != null) {
String cost = jNode.asText();
+ //Validating Cost type
+ int costType = Integer.parseInt(cost);
+ if ((costType < 1) || (costType > 2)) {
+ return null;
+ }
resultBuilder.costConstraint(cost);
}
@@ -94,6 +106,10 @@
jNode = constraintJNode.get(BANDWIDTH);
if (jNode != null) {
String bandwidth = jNode.asText();
+ double bw = Double.parseDouble(bandwidth);
+ if (bw < 0) {
+ return null;
+ }
resultBuilder.bandwidthConstraint(bandwidth);
}
}
@@ -114,8 +130,8 @@
ObjectNode constraintNode = context.mapper()
.createObjectNode()
- .put(COST, path.costConstraint().toString())
- .put(BANDWIDTH, path.bandwidthConstraint().toString());
+ .put(COST, ((CostConstraint) path.costConstraint()).type().type())
+ .put(BANDWIDTH, ((BandwidthConstraint) path.bandwidthConstraint()).bandwidth().bps());
result.set(CONSTRAINT, constraintNode);
return result;