Fix DataNormalizationOperation with nested choices 44/100244/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 24 Mar 2022 12:40:10 +0000 (13:40 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 24 Mar 2022 13:48:39 +0000 (14:48 +0100)
This is a port of YANGTOOLS-1411 to the legacy codebase.

Change-Id: Iff3ac515f4bd763c1c7b7905508fca3b5dc277c7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit b5577a04215dbdcc624d1aa2c082195cdaa15d37)

restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/impl/DataNormalizationOperation.java

index 57ba15374ad018665cfa8ba6435c2f0f8e5cab0d..8a38c842bda3b0227871f3faf0974616d2bd35c4 100644 (file)
@@ -11,7 +11,6 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -61,7 +60,7 @@ abstract class DataNormalizationOperation<T extends PathArgument> implements Ide
     }
 
     Set<QName> getQNameIdentifiers() {
-        return Collections.singleton(identifier.getNodeType());
+        return ImmutableSet.of(identifier.getNodeType());
     }
 
     abstract DataNormalizationOperation<?> getChild(PathArgument child) throws DataNormalizationException;
@@ -100,14 +99,12 @@ abstract class DataNormalizationOperation<T extends PathArgument> implements Ide
     private abstract static class DataContainerNormalizationOperation<T extends PathArgument>
             extends DataNormalizationOperation<T> {
         private final DataNodeContainer schema;
-        private final Map<QName, DataNormalizationOperation<?>> byQName;
-        private final Map<PathArgument, DataNormalizationOperation<?>> byArg;
+        private final Map<QName, DataNormalizationOperation<?>> byQName = new ConcurrentHashMap<>();
+        private final Map<PathArgument, DataNormalizationOperation<?>> byArg = new ConcurrentHashMap<>();
 
         DataContainerNormalizationOperation(final T identifier, final DataNodeContainer schema) {
             super(identifier);
             this.schema = schema;
-            this.byArg = new ConcurrentHashMap<>();
-            this.byQName = new ConcurrentHashMap<>();
         }
 
         @Override
@@ -282,8 +279,7 @@ abstract class DataNormalizationOperation<T extends PathArgument> implements Ide
 
         MapMixinNormalization(final ListSchemaNode list) {
             super(new NodeIdentifier(list.getQName()));
-            this.innerNode = new ListItemNormalization(NodeIdentifierWithPredicates.of(list.getQName(),
-                    Collections.<QName, Object>emptyMap()), list);
+            innerNode = new ListItemNormalization(NodeIdentifierWithPredicates.of(list.getQName()), list);
         }
 
         @Override
@@ -308,7 +304,7 @@ abstract class DataNormalizationOperation<T extends PathArgument> implements Ide
 
         UnkeyedListMixinNormalization(final ListSchemaNode list) {
             super(new NodeIdentifier(list.getQName()));
-            this.innerNode = new UnkeyedListItemNormalization(list);
+            innerNode = new UnkeyedListItemNormalization(list);
         }
 
         @Override
@@ -360,6 +356,11 @@ abstract class DataNormalizationOperation<T extends PathArgument> implements Ide
         DataNormalizationOperation<?> getChild(final QName child) {
             return byQName.get(child);
         }
+
+        @Override
+        Set<QName> getQNameIdentifiers() {
+            return byQName.keySet();
+        }
     }
 
     private static final class AnyxmlNormalization extends SimpleTypeNormalization<NodeIdentifier> {