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/NetworkConfigService.java b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
index c1eed98..8eb69a45 100644
--- a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
+++ b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
@@ -41,27 +41,27 @@
/**
* Returns the subject factory with the specified key.
*
- * @param subjectKey subject class key
+ * @param subjectClassKey subject class key
* @return subject class
*/
- SubjectFactory getSubjectFactory(String subjectKey);
+ SubjectFactory getSubjectFactory(String subjectClassKey);
/**
* Returns the subject factory for the specified class.
*
* @param subjectClass subject class
- * @return subject class key
+ * @return subject class factory
*/
SubjectFactory getSubjectFactory(Class subjectClass);
/**
* Returns the configuration class with the specified key.
*
- * @param subjectKey subject class key
- * @param configKey subject class name
+ * @param subjectClassKey subject class key
+ * @param configKey subject class name
* @return subject class
*/
- Class<? extends Config> getConfigClass(String subjectKey, String configKey);
+ Class<? extends Config> getConfigClass(String subjectClassKey, String configKey);
/**
* Returns the set of subjects for which some configuration is available.
diff --git a/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java b/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java
index cd2db34..f992d72 100644
--- a/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java
+++ b/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java
@@ -28,7 +28,7 @@
public abstract class SubjectFactory<S> {
private final Class<S> subjectClass;
- private final String subjectKey;
+ private final String subjectClassKey;
/**
* Creates a new configuration factory for the specified class of subjects
@@ -36,12 +36,12 @@
* subject and configuration class keys are used merely as keys for use in
* composite JSON trees.
*
- * @param subjectClass subject class
- * @param subjectKey subject class key
+ * @param subjectClass subject class
+ * @param subjectClassKey subject class key
*/
- protected SubjectFactory(Class<S> subjectClass, String subjectKey) {
+ protected SubjectFactory(Class<S> subjectClass, String subjectClassKey) {
this.subjectClass = subjectClass;
- this.subjectKey = subjectKey;
+ this.subjectClassKey = subjectClassKey;
}
/**
@@ -60,8 +60,20 @@
*
* @return configuration key
*/
- public String subjectKey() {
- return subjectKey;
+ public String subjectClassKey() {
+ return subjectClassKey;
+ }
+
+ /**
+ * Returns the unique key of the specified configuration subject.
+ * This is primarily aimed for use in composite JSON trees in external
+ * representations and has no bearing on the internal behaviours.
+ *
+ * @param subject specific subject
+ * @return subject key
+ */
+ public String subjectKey(S subject) {
+ return subject.toString();
}
/**
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();
+ }
+
}
diff --git a/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java b/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java
index b70d14e..7307258 100644
--- a/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java
@@ -29,7 +29,7 @@
}
@Override
- public SubjectFactory getSubjectFactory(String subjectKey) {
+ public SubjectFactory getSubjectFactory(String subjectClassKey) {
return null;
}
@@ -39,7 +39,7 @@
}
@Override
- public Class<? extends Config> getConfigClass(String subjectKey, String configKey) {
+ public Class<? extends Config> getConfigClass(String subjectClassKey, String configKey) {
return null;
}