Upgrade fasterXML libraries for OS-9
Upgrade fasterXML to version 2.9.5 to address security vulnerability
Wrap calls to treeRead(InputStream) to handle new behavior of null streams
Change-Id: Id199cfacd0cf9e5371dc33de9f1e058c2e72eaa5
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
index 3c4daa5..9fc25a8 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
@@ -60,6 +60,7 @@
import static javax.ws.rs.core.Response.Status.CONFLICT;
import static javax.ws.rs.core.Response.Status.CREATED;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import static org.onlab.util.Tools.readTreeFromStream;
@Path("floatingips")
public class FloatingIpWebResource extends AbstractWebResource {
@@ -114,7 +115,7 @@
public Response createFloatingIp(final InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
Collection<FloatingIp> floatingIps = createOrUpdateByInputStream(subnode);
Boolean result = nullIsNotFound((get(FloatingIpService.class)
.createFloatingIps(floatingIps)),
@@ -137,7 +138,7 @@
final InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
Collection<FloatingIp> floatingIps = createOrUpdateByInputStream(subnode);
Boolean result = nullIsNotFound(get(FloatingIpService.class)
.updateFloatingIps(floatingIps), UPDATE_FAIL);
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
index 29e67c5..47e249f 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
@@ -17,6 +17,7 @@
import static javax.ws.rs.core.Response.Status.OK;
import static org.onlab.util.Tools.nullIsNotFound;
+import static org.onlab.util.Tools.readTreeFromStream;
import java.io.IOException;
import java.io.InputStream;
@@ -107,7 +108,7 @@
@Produces(MediaType.APPLICATION_JSON)
public Response createFlowClassifier(InputStream stream) {
try {
- ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
+ ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
JsonNode flow = jsonTree.get("flow_classifier");
FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this);
@@ -136,7 +137,7 @@
public Response updateFlowClassifier(@PathParam("flow_id") String id, final InputStream stream) {
try {
- JsonNode jsonTree = mapper().readTree(stream);
+ JsonNode jsonTree = readTreeFromStream(mapper(), stream);
JsonNode flow = jsonTree.get("flow_classifier");
FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this);
Boolean result = nullIsNotFound(get(FlowClassifierService.class).updateFlowClassifier(flowClassifier),
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
index 0a6f6e7..1bfa44f 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
@@ -17,6 +17,7 @@
import static javax.ws.rs.core.Response.Status.OK;
import static org.onlab.util.Tools.nullIsNotFound;
+import static org.onlab.util.Tools.readTreeFromStream;
import java.io.IOException;
import java.io.InputStream;
@@ -106,7 +107,7 @@
@Produces(MediaType.APPLICATION_JSON)
public Response createPortChain(InputStream stream) {
try {
- ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
+ ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
JsonNode port = jsonTree.get("port_chain");
PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this);
Boolean issuccess = nullIsNotFound(get(PortChainService.class).createPortChain(portChain),
@@ -132,7 +133,7 @@
public Response updatePortPain(@PathParam("chain_id") String id,
final InputStream stream) {
try {
- ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
+ ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
JsonNode port = jsonTree.get("port_chain");
PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this);
Boolean result = nullIsNotFound(get(PortChainService.class).updatePortChain(portChain),
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
index 42b9563..91793ca 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
@@ -18,6 +18,7 @@
import static javax.ws.rs.core.Response.Status.OK;
import static org.onlab.util.Tools.nullIsNotFound;
+import static org.onlab.util.Tools.readTreeFromStream;
import java.io.IOException;
import java.io.InputStream;
@@ -111,7 +112,7 @@
try {
ObjectMapper mapper = new ObjectMapper();
- ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream);
+ ObjectNode jsonTree = readTreeFromStream(mapper, stream);
JsonNode port = jsonTree.get("port_pair_group");
PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this);
@@ -139,7 +140,7 @@
final InputStream stream) {
try {
ObjectMapper mapper = new ObjectMapper();
- ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream);
+ ObjectNode jsonTree = readTreeFromStream(mapper, stream);
JsonNode port = jsonTree.get("port_pair_group");
PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this);
Boolean isSuccess = nullIsNotFound(get(PortPairGroupService.class).updatePortPairGroup(portPairGroup),
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
index 96cf9ac..2c88f6f 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
@@ -18,6 +18,7 @@
import static javax.ws.rs.core.Response.Status.OK;
import static org.onlab.util.Tools.nullIsNotFound;
+import static org.onlab.util.Tools.readTreeFromStream;
import java.io.IOException;
import java.io.InputStream;
@@ -105,7 +106,7 @@
@Produces(MediaType.APPLICATION_JSON)
public Response createPortPair(InputStream stream) {
try {
- ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
+ ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
JsonNode port = jsonTree.get("port_pair");
PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this);
Boolean isSuccess = nullIsNotFound(get(PortPairService.class).createPortPair(portPair),
@@ -131,7 +132,7 @@
public Response updatePortPair(@PathParam("pair_id") String id,
final InputStream stream) {
try {
- ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
+ ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
JsonNode port = jsonTree.get("port_pair");
PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this);
Boolean isSuccess = nullIsNotFound(get(PortPairService.class).updatePortPair(portPair),
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
index 0d32a8d..f03f528 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
@@ -68,6 +68,7 @@
import static javax.ws.rs.core.Response.Status.CONFLICT;
import static javax.ws.rs.core.Response.Status.CREATED;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import static org.onlab.util.Tools.readTreeFromStream;
@Path("routers")
public class RouterWebResource extends AbstractWebResource {
@@ -121,7 +122,7 @@
public Response createRouter(final InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
Collection<Router> routers = createOrUpdateByInputStream(subnode);
Boolean result = nullIsNotFound((get(RouterService.class)
@@ -144,7 +145,7 @@
final InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
Collection<Router> routers = changeUpdateJsonToSub(subnode, id);
Boolean result = nullIsNotFound(get(RouterService.class)
.updateRouters(routers), UPDATE_FAIL);
@@ -184,7 +185,7 @@
}
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
if (!subnode.hasNonNull("id")) {
throw new IllegalArgumentException("id should not be null");
} else if (subnode.get("id").asText().isEmpty()) {
@@ -233,7 +234,7 @@
}
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
if (!subnode.hasNonNull("id")) {
throw new IllegalArgumentException("id should not be null");
} else if (subnode.get("id").asText().isEmpty()) {
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
index 2d122d7..b0951f4 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
@@ -19,6 +19,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import static org.onlab.util.Tools.readTreeFromStream;
import java.io.IOException;
import java.io.InputStream;
@@ -109,7 +110,7 @@
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
Iterable<Subnet> subnets = createOrUpdateByInputStream(subnode);
Boolean result = nullIsNotFound((get(SubnetService.class)
.createSubnets(subnets)),
@@ -134,7 +135,7 @@
final InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
+ JsonNode subnode = readTreeFromStream(mapper, input);
Iterable<Subnet> subnets = createOrUpdateByInputStream(subnode);
Boolean result = nullIsNotFound(get(SubnetService.class)
.updateSubnets(subnets), SUBNET_NOT_FOUND);
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
index fb64164..a18682c 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
@@ -58,6 +58,7 @@
import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
import static javax.ws.rs.core.Response.Status.OK;
+import static org.onlab.util.Tools.readTreeFromStream;
/**
* REST resource for interacting with the inventory of networks.
@@ -170,7 +171,7 @@
public Response createNetworks(InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode cfg = mapper.readTree(input);
+ JsonNode cfg = readTreeFromStream(mapper, input);
JsonNode nodes = null;
Iterable<TenantNetwork> networks = null;
if (cfg.get("network") != null) {
@@ -207,7 +208,7 @@
public Response updateNetworks(@PathParam("id") String id, InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode cfg = mapper.readTree(input);
+ JsonNode cfg = readTreeFromStream(mapper, input);
JsonNode nodes = null;
Iterable<TenantNetwork> networks = null;
if (cfg.get("network") != null) {
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
index a26f2da..014b563 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
@@ -65,6 +65,7 @@
import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
import static javax.ws.rs.core.Response.Status.OK;
+import static org.onlab.util.Tools.readTreeFromStream;
/**
* REST resource for interacting with the inventory of infrastructure
@@ -113,7 +114,7 @@
public Response createPorts(InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode cfg = mapper.readTree(input);
+ JsonNode cfg = readTreeFromStream(mapper, input);
Iterable<VirtualPort> vPorts = createOrUpdateByInputStream(cfg);
Boolean issuccess = nullIsNotFound(get(VirtualPortService.class)
.createPorts(vPorts), VPORT_NOT_FOUND);
@@ -162,7 +163,7 @@
public Response updatePorts(@PathParam("id") String id, InputStream input) {
try {
ObjectMapper mapper = new ObjectMapper();
- JsonNode cfg = mapper.readTree(input);
+ JsonNode cfg = readTreeFromStream(mapper, input);
Iterable<VirtualPort> vPorts = createOrUpdateByInputStream(cfg);
Boolean issuccess = nullIsNotFound(get(VirtualPortService.class)
.updatePorts(vPorts), VPORT_NOT_FOUND);