X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fimpl%2Futil%2Fcompat%2FDataNormalizer.java;h=28b2bde26d31e4558b5f716666147983446811cc;hp=9487f2159011132cd71e935a757b432dd324270a;hb=ac7eb6bcfe527ffd6bb25daaa658be5f91ed43ed;hpb=08217531fbe76dbcc429c71d593894fc211e50aa diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizer.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizer.java index 9487f21590..28b2bde26d 100644 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizer.java +++ b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizer.java @@ -4,6 +4,7 @@ import static com.google.common.base.Preconditions.checkArgument; import java.util.AbstractMap; import java.util.ArrayList; +import java.util.Iterator; import java.util.Map; import org.opendaylight.yangtools.yang.data.api.CompositeNode; @@ -11,6 +12,7 @@ import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates; +import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.data.api.SimpleNode; @@ -31,12 +33,9 @@ import com.google.common.collect.Iterables; public class DataNormalizer { - private final SchemaContext schemaContext; - private final DataNormalizationOperation operation; public DataNormalizer(final SchemaContext ctx) { - schemaContext = ctx; operation = DataNormalizationOperation.from(ctx); } @@ -44,14 +43,18 @@ public class DataNormalizer { ImmutableList.Builder normalizedArgs = ImmutableList.builder(); DataNormalizationOperation currentOp = operation; - for (PathArgument legacyArg : legacy.getPath()) { + Iterator arguments = legacy.getPath().iterator(); + while ( arguments.hasNext() ) { + PathArgument legacyArg = arguments.next(); currentOp = currentOp.getChild(legacyArg); checkArgument(currentOp != null, "Legacy Instance Identifier %s is not correct. Normalized Instance Identifier so far %s",legacy,normalizedArgs.build()); while (currentOp.isMixin()) { normalizedArgs.add(currentOp.getIdentifier()); currentOp = currentOp.getChild(legacyArg.getNodeType()); } - normalizedArgs.add(legacyArg); + if(arguments.hasNext() || (!currentOp.isKeyedEntry() || legacyArg instanceof NodeIdentifierWithPredicates || legacyArg instanceof NodeWithValue)) { + normalizedArgs.add(legacyArg); + } } return new InstanceIdentifier(normalizedArgs.build()); }