diff options
author | Ashlee Young <ashlee@wildernessvoice.com> | 2015-12-01 05:49:27 -0800 |
---|---|---|
committer | Ashlee Young <ashlee@wildernessvoice.com> | 2015-12-01 05:49:27 -0800 |
commit | e63291850fd0795c5700e25e67e5dee89ba54c5f (patch) | |
tree | 9707289536ad95bb739c9856761ad43275e07d8c /framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java | |
parent | 671823e12bc13be9a8b87a5d7de33da1bb7a44e8 (diff) |
onos commit hash c2999f30c69e50df905a9d175ef80b3f23a98514
Change-Id: I2bb8562c4942b6d6a6d60b663db2e17540477b81
Signed-off-by: Ashlee Young <ashlee@wildernessvoice.com>
Diffstat (limited to 'framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java')
-rw-r--r-- | framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java index 455e4929..00cbdf2f 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java @@ -16,6 +16,7 @@ package org.onosproject.rest.resources; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.onlab.packet.IpAddress; import org.onlab.packet.MacAddress; @@ -50,6 +51,7 @@ import java.io.InputStream; import java.net.URI; import java.util.HashSet; import java.util.Iterator; +import java.util.Map; import java.util.Set; import static org.onlab.util.Tools.nullIsNotFound; @@ -64,6 +66,7 @@ public class HostsWebResource extends AbstractWebResource { @Context UriInfo uriInfo; public static final String HOST_NOT_FOUND = "Host is not found"; + private static final String[] REMOVAL_KEYS = {"mac", "vlan", "location", "ipAddresses"}; /** * Get all end-station hosts. @@ -199,8 +202,9 @@ public class HostsWebResource extends AbstractWebResource { while (ipStrings.hasNext()) { ips.add(IpAddress.valueOf(ipStrings.next().asText())); } - //TODO remove elements from json node after reading them - SparseAnnotations annotations = annotations(node); + + // try to remove elements from json node after reading them + SparseAnnotations annotations = annotations(removeElements(node, REMOVAL_KEYS)); // Update host inventory HostId hostId = HostId.hostId(mac, vlanId); @@ -210,6 +214,22 @@ public class HostsWebResource extends AbstractWebResource { } /** + * Remove a set of elements from JsonNode by specifying keys. + * + * @param node JsonNode containing host information + * @param removalKeys key of elements that need to be removed + * @return removal keys + */ + private JsonNode removeElements(JsonNode node, String[] removalKeys) { + ObjectMapper mapper = new ObjectMapper(); + Map<String, Object> map = mapper.convertValue(node, Map.class); + for (String key : removalKeys) { + map.remove(key); + } + return mapper.convertValue(map, JsonNode.class); + } + + /** * Produces annotations from specified JsonNode. Copied from the ConfigProvider * class for use in the POST method. * |