ONOS-743 - Use REST API Codecs to generate JSON for CLI commands

Change-Id: I25e0840d1af03341c638f837498c95275e6cf31b
diff --git a/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java b/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java
index a52b7e3..55b9ec9 100644
--- a/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java
@@ -15,16 +15,11 @@
  */
 package org.onosproject.cli.net;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.util.List;
+
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Link;
-import org.onosproject.net.NetworkResource;
 import org.onosproject.net.intent.ConnectivityIntent;
 import org.onosproject.net.intent.HostToHostIntent;
 import org.onosproject.net.intent.Intent;
@@ -36,8 +31,10 @@
 import org.onosproject.net.intent.PointToPointIntent;
 import org.onosproject.net.intent.SinglePointToMultiPointIntent;
 
-import java.util.List;
-import java.util.Set;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 
 /**
  * Lists the inventory of intents and their states.
@@ -393,81 +390,9 @@
     private JsonNode json(IntentService service, Iterable<Intent> intents) {
         ObjectMapper mapper = new ObjectMapper();
         ArrayNode result = mapper.createArrayNode();
-        for (Intent intent : intents) {
-            result.add(json(service, mapper, intent));
-        }
+
+        intents.forEach(intent -> result.add(jsonForEntity(intent, Intent.class)));
         return result;
     }
 
-    private JsonNode json(IntentService service, ObjectMapper mapper, Intent intent) {
-        ObjectNode result = mapper.createObjectNode()
-                .put("id", intent.id().toString())
-                .put("type", intent.getClass().getSimpleName())
-                .put("appId", intent.appId().name());
-
-        IntentState state = service.getIntentState(intent.key());
-        if (state != null) {
-            result.put("state", state.toString());
-        }
-
-        if (!intent.resources().isEmpty()) {
-            ArrayNode rnode = mapper.createArrayNode();
-            for (NetworkResource resource : intent.resources()) {
-                rnode.add(resource.toString());
-            }
-            result.set("resources", rnode);
-        }
-
-        if (intent instanceof ConnectivityIntent) {
-            ConnectivityIntent ci = (ConnectivityIntent) intent;
-            if (!ci.selector().criteria().isEmpty()) {
-                result.put("selector", ci.selector().criteria().toString());
-            }
-            if (!ci.treatment().allInstructions().isEmpty()) {
-                result.put("treatment", ci.treatment().allInstructions().toString());
-            }
-        }
-
-        if (intent instanceof PathIntent) {
-            PathIntent pi = (PathIntent) intent;
-            ArrayNode pnode = mapper.createArrayNode();
-            for (Link link : pi.path().links()) {
-                pnode.add(link.toString());
-            }
-            result.set("path", pnode);
-        } else if (intent instanceof HostToHostIntent) {
-            HostToHostIntent pi = (HostToHostIntent) intent;
-            result.set("host1", LinksListCommand.json(mapper, pi.one()));
-            result.set("host2", LinksListCommand.json(mapper, pi.two()));
-        } else if (intent instanceof PointToPointIntent) {
-            PointToPointIntent pi = (PointToPointIntent) intent;
-            result.set("ingress", LinksListCommand.json(mapper, pi.ingressPoint()));
-            result.set("egress", LinksListCommand.json(mapper, pi.egressPoint()));
-        } else if (intent instanceof MultiPointToSinglePointIntent) {
-            MultiPointToSinglePointIntent pi = (MultiPointToSinglePointIntent) intent;
-            result.set("ingress", json(mapper, pi.ingressPoints()));
-            result.set("egress", LinksListCommand.json(mapper, pi.egressPoint()));
-        } else if (intent instanceof SinglePointToMultiPointIntent) {
-            SinglePointToMultiPointIntent pi = (SinglePointToMultiPointIntent) intent;
-            result.set("ingress", LinksListCommand.json(mapper, pi.ingressPoint()));
-            result.set("egress", json(mapper, pi.egressPoints()));
-        } else if (intent instanceof LinkCollectionIntent) {
-            LinkCollectionIntent li = (LinkCollectionIntent) intent;
-            result.set("links", LinksListCommand.json(li.links()));
-        }
-
-        List<Intent> installable = service.getInstallableIntents(intent.key());
-        if (installable != null && !installable.isEmpty()) {
-            result.set("installable", json(service, installable));
-        }
-        return result;
-    }
-
-    private JsonNode json(ObjectMapper mapper, Set<ConnectPoint> connectPoints) {
-        ArrayNode result = mapper.createArrayNode();
-        for (ConnectPoint cp : connectPoints) {
-            result.add(LinksListCommand.json(mapper, cp));
-        }
-        return result;
-    }
 }