Use a record for RecordId
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / LazyDataTreeModification.java
index 63644dfc3fbb6fbc924c986bee887ccda248a0b4..8c89a5a128ded5f30c7a1ae38ab7dc42d8bad367 100644 (file)
@@ -11,19 +11,18 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.MoreObjects;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
-import java.util.Map.Entry;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.DataObjectModification;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
+import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate;
 
 /**
  * Lazily translated {@link DataTreeModification} based on {@link DataTreeCandidate}.
@@ -42,31 +41,26 @@ final class LazyDataTreeModification<T extends DataObject> implements DataTreeMo
     }
 
     @SuppressWarnings({"unchecked", "rawtypes"})
-    static <T extends DataObject> DataTreeModification<T> create(final BindingToNormalizedNodeCodec codec,
+    static <T extends DataObject> DataTreeModification<T> create(final CurrentAdapterSerializer serializer,
             final DataTreeCandidate domChange, final LogicalDatastoreType datastoreType) {
-        final Entry<InstanceIdentifier<?>, BindingCodecTreeNode<?>> codecCtx = codec.getSubtreeCodec(
-            domChange.getRootPath());
-        final DataTreeIdentifier<?> path = DataTreeIdentifier.create(datastoreType, codecCtx.getKey());
-        final DataObjectModification<?> modification = LazyDataObjectModification.create(codecCtx.getValue(),
-            domChange.getRootNode());
-        return new LazyDataTreeModification(path, modification);
+        final InstanceIdentifier<?> bindingPath = serializer.coerceInstanceIdentifier(domChange.getRootPath());
+        final BindingDataObjectCodecTreeNode<?> codec = serializer.getSubtreeCodec(bindingPath);
+        final DataTreeIdentifier<?> path = DataTreeIdentifier.create(datastoreType, bindingPath);
+        return new LazyDataTreeModification(path, LazyDataObjectModification.create(codec, domChange.getRootNode()));
     }
 
     @SuppressWarnings({"unchecked", "rawtypes"})
-    static <T extends DataObject> DataTreeModification<T> create(final BindingToNormalizedNodeCodec codec,
+    static <T extends DataObject> DataTreeModification<T> create(final CurrentAdapterSerializer serializer,
             final DOMDataTreeCandidate candidate) {
-        final Entry<InstanceIdentifier<?>, BindingCodecTreeNode<?>> codecCtx = codec.getSubtreeCodec(
-            candidate.getRootPath().getRootIdentifier());
-        final DataTreeIdentifier<?> path = DataTreeIdentifier.create(candidate.getRootPath().getDatastoreType(),
-            codecCtx.getKey());
-        final DataObjectModification<?> modification = LazyDataObjectModification.create(codecCtx.getValue(),
-            candidate.getRootNode());
-        return new LazyDataTreeModification(path, modification);
+        final DOMDataTreeIdentifier domRootPath = candidate.getRootPath();
+        final InstanceIdentifier<?> bindingPath = serializer.coerceInstanceIdentifier(domRootPath.getRootIdentifier());
+        final BindingDataObjectCodecTreeNode<?> codec = serializer.getSubtreeCodec(bindingPath);
+        return new LazyDataTreeModification(DataTreeIdentifier.create(domRootPath.getDatastoreType(), bindingPath),
+            LazyDataObjectModification.create(codec, candidate.getRootNode()));
     }
 
-    static <T extends DataObject> @NonNull Collection<DataTreeModification<T>> from(
-            final BindingToNormalizedNodeCodec codec, final Collection<DataTreeCandidate> domChanges,
-            final LogicalDatastoreType datastoreType) {
+    static <T extends DataObject> @NonNull List<DataTreeModification<T>> from(final CurrentAdapterSerializer codec,
+            final List<DataTreeCandidate> domChanges, final LogicalDatastoreType datastoreType) {
         final List<DataTreeModification<T>> result = new ArrayList<>(domChanges.size());
         for (final DataTreeCandidate domChange : domChanges) {
             result.add(LazyDataTreeModification.create(codec, domChange, datastoreType));