Merge "Fix non ietf-netconf* mounted RPC invocation from Restconf"
authorTony Tkacik <ttkacik@cisco.com>
Wed, 16 Dec 2015 15:59:37 +0000 (15:59 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 16 Dec 2015 15:59:37 +0000 (15:59 +0000)
opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/NetconfDeviceSimulator.java

index 212385f2943f62799143242a2c0103faddd7dff8..97739e1614dd0cb8d27db203dc9e7b5f7fb07803 100644 (file)
@@ -298,21 +298,28 @@ public class NetconfDeviceSimulator implements Closeable {
         final Set<Capability> capabilities = Sets.newHashSet();
 
         for (final Module module : schemaContext.getModules()) {
-            final SourceIdentifier moduleSourceIdentifier = new SourceIdentifier(module.getName(),
-                    SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()));
-            try {
-                String moduleContent = new String(consumer.getSchemaSource(moduleSourceIdentifier, YangTextSchemaSource.class)
-                        .checkedGet().read());
-                capabilities.add(new YangModuleCapability(module, moduleContent));
-                //IOException would be thrown in creating SchemaContext already
-            } catch (SchemaSourceException|IOException e) {
-                throw new RuntimeException("Cannot retrieve schema source for module " + moduleSourceIdentifier.toString() + " from schema repository", e);
+            for (final Module subModule : module.getSubmodules()) {
+                addModuleCapability(consumer, capabilities, subModule);
             }
+            addModuleCapability(consumer, capabilities, module);
         }
-
         return capabilities;
     }
 
+    private void addModuleCapability(SharedSchemaRepository consumer, Set<Capability> capabilities, Module module) {
+        final SourceIdentifier moduleSourceIdentifier = SourceIdentifier.create(module.getName(),
+                (SimpleDateFormatUtil.DEFAULT_DATE_REV == module.getRevision() ? Optional.<String>absent() :
+                        Optional.of(SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()))));
+        try {
+            String moduleContent = new String(consumer.getSchemaSource(moduleSourceIdentifier, YangTextSchemaSource.class)
+                    .checkedGet().read());
+            capabilities.add(new YangModuleCapability(module, moduleContent));
+            //IOException would be thrown in creating SchemaContext already
+        } catch (SchemaSourceException |IOException e) {
+            throw new RuntimeException("Cannot retrieve schema source for module " + moduleSourceIdentifier.toString() + " from schema repository", e);
+        }
+    }
+
     private void addDefaultSchemas(final SharedSchemaRepository consumer) {
         SourceIdentifier sId = new SourceIdentifier("ietf-netconf-monitoring", "2010-10-04");
         registerSource(consumer, "/META-INF/yang/ietf-netconf-monitoring.yang", sId);