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/web/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java b/web/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
index cebcf84..08663e4 100644
--- a/web/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
+++ b/web/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
@@ -33,6 +33,8 @@
 import java.io.InputStream;
 import java.util.List;
 
+import static org.onlab.util.Tools.readTreeFromStream;
+
 /**
  * Query, create and remove segment routing plicies.
  */
@@ -69,7 +71,7 @@
     @Consumes(MediaType.APPLICATION_JSON)
     public Response createPolicy(InputStream input) throws IOException {
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode policyJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode policyJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
         Policy policyInfo = POLICY_CODEC.decode(policyJson, this);
 
@@ -92,7 +94,7 @@
     @Consumes(MediaType.APPLICATION_JSON)
     public Response removePolicy(InputStream input) throws IOException {
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode policyJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode policyJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
         Policy policyInfo = POLICY_CODEC.decode(policyJson, this);
         // TODO: Check the result
diff --git a/web/src/main/java/org/onosproject/segmentrouting/web/PseudowireWebResource.java b/web/src/main/java/org/onosproject/segmentrouting/web/PseudowireWebResource.java
index fd4c906..1d8bb76 100644
--- a/web/src/main/java/org/onosproject/segmentrouting/web/PseudowireWebResource.java
+++ b/web/src/main/java/org/onosproject/segmentrouting/web/PseudowireWebResource.java
@@ -44,6 +44,7 @@
 import java.util.stream.Collectors;
 
 import static org.onlab.util.Tools.nullIsIllegal;
+import static org.onlab.util.Tools.readTreeFromStream;
 
 /**
  * Query, create and remove pseudowires.
@@ -107,7 +108,7 @@
     public Response createPseudowire(InputStream input) throws IOException {
 
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode pseudowireJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode pseudowireJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
 
         DefaultL2TunnelDescription pseudowire = PSEUDOWIRE_CODEC.decode(pseudowireJson, this);
@@ -147,7 +148,7 @@
     public Response createPseudowiresBulk(InputStream input) throws IOException {
 
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode pseudowireJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode pseudowireJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
         List<DefaultL2TunnelDescription> pseudowires;
 
@@ -189,7 +190,7 @@
     public Response removePseudowire(InputStream input) throws IOException {
 
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode pseudowireJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode pseudowireJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
 
         Integer pseudowireId = PSEUDOWIRE_CODEC.decodeId(pseudowireJson);
@@ -229,7 +230,7 @@
     public Response removePseudowiresBulk(InputStream input) throws IOException {
 
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode pseudowireJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode pseudowireJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
 
         List<Integer> ids = new ArrayList<>();
diff --git a/web/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java b/web/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
index 476bcd8..010f6c9 100644
--- a/web/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
+++ b/web/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
@@ -33,6 +33,8 @@
 import java.io.InputStream;
 import java.util.List;
 
+import static org.onlab.util.Tools.readTreeFromStream;
+
 /**
  * Query, create and remove segment routing tunnels.
  */
@@ -69,7 +71,7 @@
     @Consumes(MediaType.APPLICATION_JSON)
     public Response createTunnel(InputStream input) throws IOException {
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode tunnelJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode tunnelJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
         Tunnel tunnelInfo = TUNNEL_CODEC.decode(tunnelJson, this);
         srService.createTunnel(tunnelInfo);
@@ -88,7 +90,7 @@
     @Consumes(MediaType.APPLICATION_JSON)
     public Response removeTunnel(InputStream input) throws IOException {
         ObjectMapper mapper = new ObjectMapper();
-        ObjectNode tunnelJson = (ObjectNode) mapper.readTree(input);
+        ObjectNode tunnelJson = readTreeFromStream(mapper, input);
         SegmentRoutingService srService = get(SegmentRoutingService.class);
         Tunnel tunnelInfo = TUNNEL_CODEC.decode(tunnelJson, this);
         srService.removeTunnel(tunnelInfo);