[ONOS-5763] YSR changes to support decode without module name.
Change-Id: I662e52c2b3971e7a333ec9d887f8747733a0e87e
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java
index 58d772c..0c4e22f 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java
@@ -112,6 +112,11 @@
*/
private final ConcurrentMap<YangModuleIdentifier, String> yangFileStore;
+ /**
+ * Map for storing schema nodes with respect to namespace.
+ */
+ private final ConcurrentMap<String, YangSchemaNode> nameSpaceSchemaStore;
+
private final ConcurrentMap<Object, Boolean> ynhRegistrationStore;
private final ConcurrentMap<String, String> jarPathStore;
@@ -129,6 +134,7 @@
appNameKeyStore = new ConcurrentHashMap<>();
ynhRegistrationStore = new ConcurrentHashMap<>();
jarPathStore = new ConcurrentHashMap<>();
+ nameSpaceSchemaStore = new ConcurrentHashMap<>();
}
@@ -188,6 +194,8 @@
opParamNameKeyStore.remove(getOpParamClassName(curNode));
yangFileStore.remove(getModuleIdentifier(curNode));
appNameKeyStore.remove(serviceName);
+ nameSpaceSchemaStore.remove(curNode.getNameSpace()
+ .getModuleNamespace());
removeYsrGeneratedTemporaryResources(jarPathStore.get(serviceName),
serviceName);
log.info(" service {} is unregistered.",
@@ -267,6 +275,16 @@
}
@Override
+ public YangSchemaNode getSchemaWrtNameSpace(String nameSpace) {
+
+ YangSchemaNode node = nameSpaceSchemaStore.get(nameSpace);
+ if (node == null) {
+ log.error("node with {} namespace not found.", nameSpace);
+ }
+ return node;
+ }
+
+ @Override
public String getYangFile(YangModuleIdentifier moduleIdentifier) {
String file = yangFileStore.get(moduleIdentifier);
if (file == null) {
@@ -312,6 +330,7 @@
interfaceNameKeyStore.clear();
registerClassStore.clear();
yangFileStore.clear();
+ nameSpaceSchemaStore.clear();
}
@Override
@@ -494,6 +513,10 @@
//update op param store.
opParamNameKeyStore.put(getOpParamClassName(appNode), appNode);
+
+ //update namespaceSchema store.
+ nameSpaceSchemaStore.put(appNode.getNameSpace().getModuleNamespace(), appNode);
+
//Checks if notification is present then update notification store map.
String eventSubject = null;
try {
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java
index ed5d95a..e283f57 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java
@@ -141,4 +141,19 @@
*/
void processModuleLibrary(String serviceName, YangModuleLibrary library);
+ /**
+ * Returns YANG schema node for a given namespace while xml decoding.
+ * <p>
+ * According to rfc 6020 Xml should not have module name in it but when
+ * decoder wants to convert xml to YANG object it will need module schema
+ * which it can get only by using module name from YSR. So if YCH sends
+ * namespace of a module we can given it the schema node of module. In
+ * this case namespace should be unique.
+ * </p>
+ *
+ * @param nameSpace name space of module
+ * @return module schema node
+ */
+ YangSchemaNode getSchemaWrtNameSpace(String nameSpace);
+
}