Fix logic ensuring parent presence
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / BindingDOMWriteTransactionAdapter.java
index 8e217a447ea02b6ca17f023855db492db1ba3d1d..f7f079b5c2a6c565990be10e0feb3ee907d563e5 100644 (file)
@@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.common.util.concurrent.FluentFuture;
 import java.util.Map.Entry;
-import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -35,8 +34,8 @@ class BindingDOMWriteTransactionAdapter<T extends DOMDataTreeWriteTransaction> e
     }
 
     @Override
-    public final <U extends DataObject> void mergeParentStructurePut(@NonNull LogicalDatastoreType store,
-            @NonNull InstanceIdentifier<U> path, @NonNull U data) {
+    public final <U extends DataObject> void mergeParentStructurePut(final LogicalDatastoreType store,
+            final InstanceIdentifier<U> path, final U data) {
         final Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> normalized = toNormalized("put",
             path, data);
         ensureParentsByMerge(store, normalized.getKey(), path);
@@ -51,8 +50,8 @@ class BindingDOMWriteTransactionAdapter<T extends DOMDataTreeWriteTransaction> e
     }
 
     @Override
-    public final <U extends DataObject> void mergeParentStructureMerge(@NonNull LogicalDatastoreType store,
-            @NonNull InstanceIdentifier<U> path, @NonNull U data) {
+    public final <U extends DataObject> void mergeParentStructureMerge(final LogicalDatastoreType store,
+            final InstanceIdentifier<U> path, final U data) {
         final Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> normalized = toNormalized("merge", path, data);
         ensureParentsByMerge(store, normalized.getKey(), path);
         getDelegate().merge(store, normalized.getKey(), normalized.getValue());
@@ -67,7 +66,7 @@ class BindingDOMWriteTransactionAdapter<T extends DOMDataTreeWriteTransaction> e
     }
 
     @Override
-    public @NonNull FluentFuture<? extends @NonNull CommitInfo> commit() {
+    public FluentFuture<? extends CommitInfo> commit() {
         return getDelegate().commit();
     }
 
@@ -87,7 +86,7 @@ class BindingDOMWriteTransactionAdapter<T extends DOMDataTreeWriteTransaction> e
     private void ensureParentsByMerge(final LogicalDatastoreType store, final YangInstanceIdentifier domPath,
             final InstanceIdentifier<?> path) {
         final YangInstanceIdentifier parentPath = domPath.getParent();
-        if (parentPath != null) {
+        if (parentPath != null && !parentPath.isEmpty()) {
             final NormalizedNode<?, ?> parentNode = getCodec().instanceIdentifierToNode(parentPath);
             getDelegate().merge(store, YangInstanceIdentifier.create(parentNode.getIdentifier()), parentNode);
         }