X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FAbstractWriteTransaction.java;h=7e1f112c4ad4ffc20d0e67a3069f434292c47ef7;hp=4597f0646c030b311ac205613c8d3d4f33a05d39;hb=d6fe0f5e53edb5ff3bc90024c984baeab3e788be;hpb=12613b3cfb0af8d185e430ffd404298191bee518 diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractWriteTransaction.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractWriteTransaction.java index 4597f0646c..7e1f112c4a 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractWriteTransaction.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractWriteTransaction.java @@ -9,9 +9,7 @@ package org.opendaylight.controller.md.sal.binding.impl; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.collect.Iterables; import com.google.common.util.concurrent.CheckedFuture; -import java.util.Collections; import java.util.Map.Entry; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; @@ -20,7 +18,6 @@ import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.Identifiable; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** @@ -98,25 +95,20 @@ public abstract class AbstractWriteTransaction path, final Entry> normalized) { if (Identifiable.class.isAssignableFrom(path.getTargetType())) { - YangInstanceIdentifier parentMapPath = getParent(normalized.getKey()).get(); + YangInstanceIdentifier parentMapPath = normalized.getKey().getParent(); + Preconditions.checkArgument(parentMapPath != null, "Map path %s does not have a parent", path); + NormalizedNode emptyParent = getCodec().getDefaultNodeFor(parentMapPath); getDelegate().merge(store, parentMapPath, emptyParent); } } - // FIXME (should be probaly part of InstanceIdentifier) - protected static Optional getParent( - final YangInstanceIdentifier child) { - - Iterable mapEntryItemPath = child.getPathArguments(); - int parentPathSize = Iterables.size(mapEntryItemPath) - 1; - if (parentPathSize > 1) { - return Optional.of(YangInstanceIdentifier.create(Iterables.limit(mapEntryItemPath, parentPathSize))); - } else if(parentPathSize == 0) { - return Optional.of(YangInstanceIdentifier.create(Collections.emptyList())); - } else { - return Optional.absent(); - } + /** + * @deprecated Use {@link YangInstanceIdentifier#getParent()} instead. + */ + @Deprecated + protected static Optional getParent(final YangInstanceIdentifier child) { + return Optional.fromNullable(child.getParent()); } /**