Update MRI projects for Aluminium
[netconf.git] / restconf / restconf-nb-rfc8040 / src / main / java / org / opendaylight / restconf / nb / rfc8040 / utils / mapping / RestconfMappingNodeUtil.java
index a37f65850cbf8533faf0e45c9825a51537852c2d..eb979bc340c50c1de0ade813bcadd19105da2f14 100644 (file)
@@ -13,8 +13,8 @@ import java.time.OffsetDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.Collection;
+import java.util.List;
 import java.util.Optional;
-import java.util.Set;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.nb.rfc8040.Rfc8040.IetfYangLibrary;
 import org.opendaylight.restconf.nb.rfc8040.Rfc8040.MonitoringModule;
@@ -36,11 +36,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Deviation;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
@@ -75,11 +76,11 @@ public final class RestconfMappingNodeUtil {
      * @return mapped data as {@link NormalizedNode}
      */
     public static NormalizedNode<NodeIdentifier, Collection<DataContainerChild<? extends PathArgument, ?>>>
-            mapModulesByIetfYangLibraryYang(final Set<Module> modules, final Module ietfYangLibraryModule,
-                    final SchemaContext context, final String moduleSetId) {
+            mapModulesByIetfYangLibraryYang(final Collection<? extends Module> modules,
+                    final Module ietfYangLibraryModule, final SchemaContext context, final String moduleSetId) {
         final DataSchemaNode modulesStateSch =
                 ietfYangLibraryModule.getDataChildByName(IetfYangLibrary.MODUELS_STATE_CONT_QNAME);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> modulesStateBuilder =
+        final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> modulesStateBuilder =
                 Builders.containerBuilder((ContainerSchemaNode) modulesStateSch);
 
         final DataSchemaNode moduleSetIdSch =
@@ -115,7 +116,7 @@ public final class RestconfMappingNodeUtil {
     private static void fillMapByModules(final CollectionNodeBuilder<MapEntryNode, OrderedMapNode> mapBuilder,
             final DataSchemaNode moduleSch, final boolean isSubmodule, final Module module,
             final Module ietfYangLibraryModule, final SchemaContext context) {
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder =
+        final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder =
                 Builders.mapEntryBuilder((ListSchemaNode) moduleSch);
         addCommonLeafs(module, mapEntryBuilder, ietfYangLibraryModule);
         addChildOfModuleBySpecificModuleInternal(
@@ -162,7 +163,7 @@ public final class RestconfMappingNodeUtil {
      *             schema context
      */
     private static void addSubmodules(final Module module,
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
             final Module ietfYangLibraryModule, final SchemaContext context) {
         final DataSchemaNode listSubm = findSchemaInListOfModulesSchema(
                 IetfYangLibrary.SPECIFIC_MODULE_SUBMODULE_LIST_QNAME, ietfYangLibraryModule);
@@ -187,21 +188,19 @@ public final class RestconfMappingNodeUtil {
      *             schema context
      */
     private static void addDeviationList(final Module module,
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
             final Module ietfYangLibraryModule, final SchemaContext context) {
         final DataSchemaNode deviationsSchema = findSchemaInListOfModulesSchema(
                 IetfYangLibrary.SPECIFIC_MODULE_DEVIATION_LIST_QNAME, ietfYangLibraryModule);
         final CollectionNodeBuilder<MapEntryNode, MapNode> deviations =
                 Builders.mapBuilder((ListSchemaNode) deviationsSchema);
         for (final Deviation deviation : module.getDeviations()) {
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> deviationEntryNode =
+            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(),
-                    ietfYangLibraryModule);
-            addChildOfModuleBySpecificModule(IetfYangLibrary.SPECIFIC_MODULE_REVISION_LEAF_QNAME, deviationEntryNode,
-                    lastComponent.getRevision(), ietfYangLibraryModule);
+            final List<QName> ids = deviation.getTargetPath().getNodeIdentifiers();
+            final QName lastComponent = ids.get(ids.size() - 1);
+            addCommonLeafs(context.findModule(lastComponent.getModule()).get(), deviationEntryNode,
+                ietfYangLibraryModule);
             deviations.withChild(deviationEntryNode.build());
         }
         mapEntryBuilder.withChild(deviations.build());
@@ -220,8 +219,8 @@ public final class RestconfMappingNodeUtil {
      *             ieat-yang-library module
      */
     private static void addFeatureLeafList(final QName qnameOfFeaturesLeafList,
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
-            final Set<FeatureDefinition> features, final Module ietfYangLibraryModule) {
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
+            final Collection<? extends FeatureDefinition> features, final Module ietfYangLibraryModule) {
         final DataSchemaNode schemaNode =
                 findSchemaInListOfModulesSchema(qnameOfFeaturesLeafList, ietfYangLibraryModule);
         final ListNodeBuilder<Object, LeafSetEntryNode<Object>> leafSetBuilder =
@@ -245,7 +244,7 @@ public final class RestconfMappingNodeUtil {
      *             ietf-yang-library module
      */
     private static void addCommonLeafs(final Module module,
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
             final Module ietfYangLibraryModule) {
         addChildOfModuleBySpecificModuleInternal(IetfYangLibrary.SPECIFIC_MODULE_NAME_LEAF_QNAME, mapEntryBuilder,
                 module.getName(), ietfYangLibraryModule);
@@ -266,7 +265,7 @@ public final class RestconfMappingNodeUtil {
      *             ietf-yang-library module
      */
     private static void addChildOfModuleBySpecificModuleOfListChild(final QName specificQName,
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
             final Object value, final Module ietfYangLibraryModule) {
         final DataSchemaNode leafSch = findSchemaInListOfModulesSchema(specificQName, ietfYangLibraryModule);
         mapEntryBuilder.withChild(Builders.leafBuilder((LeafSchemaNode) leafSch).withValue(value).build());
@@ -306,7 +305,7 @@ public final class RestconfMappingNodeUtil {
      *             ietf-yang-library module
      */
     private static void addChildOfModuleBySpecificModuleInternal(final QName specifiLeafQName,
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
             final Object value, final Module ietfYangLibraryModule) {
         final DataSchemaNode nameLeaf = findNodeInInternGroupings(specifiLeafQName, ietfYangLibraryModule);
         mapEntryBuilder.withChild(Builders.leafBuilder((LeafSchemaNode) nameLeaf).withValue(value).build());
@@ -336,25 +335,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 DataContainerNodeAttrBuilder<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.
      *
@@ -384,11 +364,11 @@ public final class RestconfMappingNodeUtil {
             mapCapabilites(final Module monitoringModule) {
         final DataSchemaNode restconfState =
                 monitoringModule.getDataChildByName(MonitoringModule.CONT_RESTCONF_STATE_QNAME);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> restStateContBuilder =
+        final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> restStateContBuilder =
                 Builders.containerBuilder((ContainerSchemaNode) restconfState);
         final DataSchemaNode capabilitesContSchema =
                 getChildOfCont((ContainerSchemaNode) restconfState, MonitoringModule.CONT_CAPABILITES_QNAME);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> capabilitesContBuilder =
+        final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> capabilitesContBuilder =
                 Builders.containerBuilder((ContainerSchemaNode) capabilitesContSchema);
         final DataSchemaNode leafListCapa = getChildOfCont((ContainerSchemaNode) capabilitesContSchema,
                 MonitoringModule.LEAF_LIST_CAPABILITY_QNAME);
@@ -476,15 +456,15 @@ public final class RestconfMappingNodeUtil {
      */
     @SuppressWarnings("rawtypes")
     public static NormalizedNode mapYangNotificationStreamByIetfRestconfMonitoring(final QName notifiQName,
-            final Set<NotificationDefinition> notifications, final Instant start, final String outputType,
-            final URI uri, final Module monitoringModule, final boolean existParent) {
+            final Collection<? extends NotificationDefinition> notifications, final Instant start,
+            final String outputType, final URI uri, final Module monitoringModule, final boolean existParent) {
         for (final NotificationDefinition notificationDefinition : notifications) {
             if (notificationDefinition.getQName().equals(notifiQName)) {
                 final DataSchemaNode streamListSchema = ((ContainerSchemaNode) ((ContainerSchemaNode) monitoringModule
                         .getDataChildByName(MonitoringModule.CONT_RESTCONF_STATE_QNAME))
                                 .getDataChildByName(MonitoringModule.CONT_STREAMS_QNAME))
                                         .getDataChildByName(MonitoringModule.LIST_STREAM_QNAME);
-                final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry =
+                final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry =
                         Builders.mapEntryBuilder((ListSchemaNode) streamListSchema);
 
                 final ListSchemaNode listSchema = (ListSchemaNode) streamListSchema;
@@ -492,7 +472,7 @@ public final class RestconfMappingNodeUtil {
                         listSchema.getDataChildByName(MonitoringModule.LEAF_NAME_STREAM_QNAME),
                         notificationDefinition.getQName().getLocalName());
 
-                final java.util.Optional<String> optDesc = notificationDefinition.getDescription();
+                final Optional<String> optDesc = notificationDefinition.getDescription();
                 if (optDesc.isPresent()) {
                     prepareLeafAndFillEntryBuilder(streamEntry,
                             listSchema.getDataChildByName(MonitoringModule.LEAF_DESCR_STREAM_QNAME), optDesc.get());
@@ -525,10 +505,10 @@ public final class RestconfMappingNodeUtil {
     }
 
     private static void prepareListAndFillEntryBuilder(
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry,
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry,
             final ListSchemaNode listSchemaNode, final String outputType, final URI uriToWebsocketServer) {
         final CollectionNodeBuilder<MapEntryNode, MapNode> accessListBuilder = Builders.mapBuilder(listSchemaNode);
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> entryAccessList =
+        final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> entryAccessList =
                 Builders.mapEntryBuilder(listSchemaNode);
         prepareLeafAndFillEntryBuilder(entryAccessList,
                 listSchemaNode.getDataChildByName(MonitoringModule.LEAF_ENCODING_ACCESS_QNAME), outputType);
@@ -546,7 +526,7 @@ public final class RestconfMappingNodeUtil {
      * @param value         Value
      */
     private static void prepareLeafAndFillEntryBuilder(
-            final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry,
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry,
             final DataSchemaNode leafSchema, final Object value) {
         streamEntry.withChild(Builders.leafBuilder((LeafSchemaNode) leafSchema).withValue(value).build());
     }
@@ -578,7 +558,7 @@ public final class RestconfMappingNodeUtil {
     @SuppressWarnings("rawtypes")
     public static NormalizedNode mapDataChangeNotificationStreamByIetfRestconfMonitoring(
             final YangInstanceIdentifier path, final Instant start, final String outputType, final URI uri,
-            final Module monitoringModule, final boolean existParent, final SchemaContext schemaContext) {
+            final Module monitoringModule, final boolean existParent, final EffectiveModelContext schemaContext) {
         final SchemaNode schemaNode = ParserIdentifier
                 .toInstanceIdentifier(ParserIdentifier.stringFromYangInstanceIdentifier(path, schemaContext),
                         schemaContext, Optional.empty())
@@ -587,7 +567,7 @@ public final class RestconfMappingNodeUtil {
                 .getDataChildByName(MonitoringModule.CONT_RESTCONF_STATE_QNAME))
                         .getDataChildByName(MonitoringModule.CONT_STREAMS_QNAME))
                                 .getDataChildByName(MonitoringModule.LIST_STREAM_QNAME);
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry =
+        final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamEntry =
                 Builders.mapEntryBuilder((ListSchemaNode) streamListSchema);
 
         final ListSchemaNode listSchema = (ListSchemaNode) streamListSchema;
@@ -595,7 +575,7 @@ public final class RestconfMappingNodeUtil {
                 listSchema.getDataChildByName(MonitoringModule.LEAF_NAME_STREAM_QNAME),
                 schemaNode.getQName().getLocalName());
 
-        final java.util.Optional<String> optDesc = schemaNode.getDescription();
+        final Optional<String> optDesc = schemaNode.getDescription();
         if (optDesc.isPresent()) {
             prepareLeafAndFillEntryBuilder(streamEntry,
                     listSchema.getDataChildByName(MonitoringModule.LEAF_DESCR_STREAM_QNAME), optDesc.get());