From 5a0309ffeb2a770a3a5f750f32085bb3d90e70c4 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 23 Feb 2015 22:45:52 +0100 Subject: [PATCH] Make DOMDataTreeIdentifier implement Comparable We can easily define total ordering on this class, which is useful for maintaining order so that we can find the longest-prefix match easily by iterating over the keys in the natural ordering. Change-Id: Ie2f83ea494fe278df4acc1cb6059dae440ef8f37 Signed-off-by: Robert Varga --- .../md/sal/dom/api/DOMDataTreeIdentifier.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataTreeIdentifier.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataTreeIdentifier.java index 7370ebee7f..f404c0637f 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataTreeIdentifier.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataTreeIdentifier.java @@ -8,17 +8,19 @@ package org.opendaylight.controller.md.sal.dom.api; import com.google.common.base.Preconditions; import java.io.Serializable; +import java.util.Iterator; import javax.annotation.Nonnull; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.concepts.Path; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; /** * A unique identifier for a particular subtree. It is composed of the logical * data store type and the instance identifier of the root node. */ -public final class DOMDataTreeIdentifier implements Immutable, Path, Serializable { +public final class DOMDataTreeIdentifier implements Immutable, Path, Serializable, Comparable { private static final long serialVersionUID = 1L; private final YangInstanceIdentifier rootIdentifier; private final LogicalDatastoreType datastoreType; @@ -74,4 +76,30 @@ public final class DOMDataTreeIdentifier implements Immutable, Path mi = rootIdentifier.getPathArguments().iterator(); + final Iterator oi = o.rootIdentifier.getPathArguments().iterator(); + + while (mi.hasNext()) { + if (!oi.hasNext()) { + return 1; + } + + final PathArgument ma = mi.next(); + final PathArgument oa = oi.next(); + i = ma.compareTo(oa); + if (i != 0) { + return i; + } + } + + return oi.hasNext() ? -1 : 0; + } } -- 2.36.6