X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fapi%2FDOMDataTreeIdentifier.java;h=4c46ec509dfda7319fe04226f063dd6f76c262ab;hp=7370ebee7fe1ae3c0ac3b60ddd4337ffad53e66f;hb=2a6aa1775604906755883f810ee9ea6d5f286135;hpb=c31509c7a6630e54a9f9749a643fed5e1a1ad380 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..4c46ec509d 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 @@ -1,31 +1,60 @@ /* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.md.sal.dom.api; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + +import com.google.common.base.MoreObjects; import java.io.Serializable; -import javax.annotation.Nonnull; +import java.util.Iterator; +import org.eclipse.jdt.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. + * + * @deprecated Use {@link org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier} instead. */ -public final class DOMDataTreeIdentifier implements Immutable, Path, Serializable { +@Deprecated(forRemoval = true) +public final class DOMDataTreeIdentifier implements Immutable, + Path, Serializable, Comparable { private static final long serialVersionUID = 1L; - private final YangInstanceIdentifier rootIdentifier; - private final LogicalDatastoreType datastoreType; + private final @NonNull YangInstanceIdentifier rootIdentifier; + private final @NonNull LogicalDatastoreType datastoreType; + + public DOMDataTreeIdentifier(final LogicalDatastoreType datastoreType, + final YangInstanceIdentifier rootIdentifier) { + this.datastoreType = requireNonNull(datastoreType); + this.rootIdentifier = requireNonNull(rootIdentifier); + } + + /** + * Return a counterpart to an MD-SAL data tree identifier. + * + * @return Controller data tree identifier. + */ + public static DOMDataTreeIdentifier fromMdsal(final org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier mdsal) { + return new DOMDataTreeIdentifier(LogicalDatastoreType.fromMdsal(mdsal.getDatastoreType()), + mdsal.getRootIdentifier()); + } - public DOMDataTreeIdentifier(final LogicalDatastoreType datastoreType, final YangInstanceIdentifier rootIdentifier) { - this.datastoreType = Preconditions.checkNotNull(datastoreType); - this.rootIdentifier = Preconditions.checkNotNull(rootIdentifier); + /** + * Return MD-SAL counterpart of this object. + * + * @return MD-SAL data tree identifier. + */ + public org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier toMdsal() { + return new org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier(datastoreType.toMdsal(), rootIdentifier); } /** @@ -33,7 +62,7 @@ public final class DOMDataTreeIdentifier implements Immutable, Path mi = rootIdentifier.getPathArguments().iterator(); + final Iterator oi = obj.rootIdentifier.getPathArguments().iterator(); + + while (mi.hasNext()) { + if (!oi.hasNext()) { + return 1; + } + + final PathArgument ma = mi.next(); + final PathArgument oa = oi.next(); + cmp = ma.compareTo(oa); + if (cmp != 0) { + return cmp; + } + } + + return oi.hasNext() ? -1 : 0; + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("datastore", datastoreType).add("root", rootIdentifier).toString(); + } }