Fix for deviation list mapping in Restconf
[netconf.git] / restconf / restconf-nb-rfc8040 / src / main / java / org / opendaylight / restconf / nb / rfc8040 / utils / mapping / RestconfMappingNodeUtil.java
index 68e03c4121e89c19d55731ac4224991abebead48..8361ace56e2cf819f096af70c9ce5eb5d0e11363 100644 (file)
@@ -197,11 +197,14 @@ public final class RestconfMappingNodeUtil {
             final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> deviationEntryNode =
                     Builders.mapEntryBuilder((ListSchemaNode) deviationsSchema);
             final QName lastComponent = deviation.getTargetPath().getLastComponent();
-            addChildOfModuleBySpecificModule(IetfYangLibrary.SPECIFIC_MODULE_NAME_LEAF_QNAME, deviationEntryNode,
-                    context.findModule(lastComponent.getModule()).get().getName(),
+            addChildOfModuleBySpecificModuleInternal(IetfYangLibrary.SPECIFIC_MODULE_NAME_LEAF_QNAME,
+                    deviationEntryNode, context.findModule(lastComponent.getModule()).get().getName(),
                     ietfYangLibraryModule);
-            addChildOfModuleBySpecificModule(IetfYangLibrary.SPECIFIC_MODULE_REVISION_LEAF_QNAME, deviationEntryNode,
-                    lastComponent.getRevision(), ietfYangLibraryModule);
+            if (lastComponent.getRevision().isPresent()) {
+                addChildOfModuleBySpecificModuleInternal(IetfYangLibrary.SPECIFIC_MODULE_REVISION_LEAF_QNAME,
+                        deviationEntryNode, lastComponent.getRevision(),
+                        ietfYangLibraryModule);
+            }
             deviations.withChild(deviationEntryNode.build());
         }
         mapEntryBuilder.withChild(deviations.build());
@@ -336,25 +339,6 @@ public final class RestconfMappingNodeUtil {
         throw new RestconfDocumentedException(qnameOfSchema.getLocalName() + " doesn't exist.");
     }
 
-    /**
-     * Mapping childrens of list-module.
-     *
-     * @param specifiLeafQName
-     *             qname of leaf
-     * @param mapEntryBuilder
-     *             maptEntryBuilder of parent for mapping children
-     * @param value
-     *             valeu of leaf
-     * @param ietfYangLibraryModule
-     *             ietf-yang-library module
-     */
-    private static void addChildOfModuleBySpecificModule(final QName specifiLeafQName,
-            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
-            final Object value, final Module ietfYangLibraryModule) {
-        final DataSchemaNode nameLeaf = findNodeInGroupings(specifiLeafQName, ietfYangLibraryModule);
-        mapEntryBuilder.withChild(Builders.leafBuilder((LeafSchemaNode) nameLeaf).withValue(value).build());
-    }
-
     /**
      * Find schema of specific leaf in list-module grouping.
      *