ONOS-3841 fix for deferred Subject issue
Change-Id: I0901757054b5263bca8ed5d4c38dc595529e3c45
diff --git a/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java b/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java
index 4a31aff..f2bee40 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java
@@ -136,13 +136,19 @@
@SuppressWarnings("unchecked")
private void validateConfig(ConfigKey key, ConfigFactory configFactory, JsonNode json) {
- Config config = createConfig(key.subject, configFactory.configClass(), json);
+ Object subject;
+ if (key.subject instanceof String) {
+ subject = configFactory.subjectFactory().createSubject((String) key.subject);
+ } else {
+ subject = key.subject;
+ }
+ Config config = createConfig(subject, configFactory.configClass(), json);
try {
checkArgument(config.isValid(), INVALID_CONFIG_JSON);
- configs.putAndGet(key(key.subject, configFactory.configClass()), json);
+ configs.putAndGet(key(subject, configFactory.configClass()), json);
} catch (Exception e) {
log.warn("Failed to validate pending {} configuration for {}: {}",
- key.configKey, configFactory.subjectFactory().subjectKey(key.subject), json);
+ key.configKey, key.subject, json);
}
}
@@ -156,7 +162,7 @@
@Override
@SuppressWarnings("unchecked")
public <S, C extends Config<S>> ConfigFactory<S, C> getConfigFactory(Class<C> configClass) {
- return (ConfigFactory<S, C>) factoriesByConfig.get(configClass.getName());
+ return factoriesByConfig.get(configClass.getName());
}
@Override