Corrected output of network configuration subjectKeys in JSON output; no longer relies on subject.toString.

Change-Id: If4e07bc27cfaf8feb59397a5f104e5f663504f6e
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java b/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java
index 884f2e2..311566b 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java
@@ -43,6 +43,10 @@
                 public ApplicationId createSubject(String key) {
                     return coreService.registerApplication(key);
                 }
+                @Override
+                public String subjectKey(ApplicationId subject) {
+                    return subject.name();
+                }
             };
 
     public static final SubjectFactory<DeviceId> DEVICE_SUBJECT_FACTORY =
@@ -59,6 +63,10 @@
                 public ConnectPoint createSubject(String key) {
                     return ConnectPoint.deviceConnectPoint(key);
                 }
+                @Override
+                public String subjectKey(ConnectPoint subject) {
+                    return key(subject);
+                }
             };
 
     public static final SubjectFactory<HostId> HOST_SUBJECT_FACTORY =
@@ -78,6 +86,10 @@
                     return LinkKey.linkKey(ConnectPoint.deviceConnectPoint(cps[0]),
                                            ConnectPoint.deviceConnectPoint(cps[1]));
                 }
+                @Override
+                public String subjectKey(LinkKey subject) {
+                    return key(subject.src()) + "-" + key(subject.dst());
+                }
             };
 
     /**
@@ -90,4 +102,8 @@
         coreService = service;
     }
 
+    private static String key(ConnectPoint subject) {
+        return subject.deviceId() + "/" + subject.port();
+    }
+
 }