BUG-1414: fix InstanceIdentifier.child(Class, Object) 84/9284/1
authorRobert Varga <rovarga@cisco.com>
Thu, 24 Jul 2014 11:42:18 +0000 (13:42 +0200)
committerRobert Varga <rovarga@cisco.com>
Thu, 24 Jul 2014 11:52:16 +0000 (13:52 +0200)
The result of the method is always a KeyedInstanceIdentifier, so let's
not force users to use casts.

Change-Id: Icabb8999445ff64936e7a32a69eacfc2c9647c64
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifier.java
yang/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/KeyedInstanceIdentifier.java

index f0ef7bab847344dec5c495a055088dc07a8c225c..e97b5ab98d3a5efbfc1d5e9a1bc708887110404b 100644 (file)
@@ -13,9 +13,11 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
+
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+
 import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.concepts.Path;
@@ -316,10 +318,10 @@ public class InstanceIdentifier<T extends DataObject> implements Path<InstanceId
     }
 
     @SuppressWarnings("unchecked")
-    public final <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>> InstanceIdentifier<N> child(
+    public final <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>> KeyedInstanceIdentifier<N, K> child(
             final Class<N> listItem, final K listKey) {
         final PathArgument arg = new IdentifiableItem<>(listItem, listKey);
-        return (InstanceIdentifier<N>) childIdentifier(arg);
+        return (KeyedInstanceIdentifier<N, K>) childIdentifier(arg);
     }
 
     @SuppressWarnings("unchecked")
@@ -528,7 +530,7 @@ public class InstanceIdentifier<T extends DataObject> implements Path<InstanceId
         }
 
         @Override
-        public int compareTo(PathArgument arg) {
+        public int compareTo(final PathArgument arg) {
             return type.getCanonicalName().compareTo(arg.getType().getCanonicalName());
         }
     }
index 6b6e05c7188c0788434d081615e288b6da6b580f..60f891631ae26590e12faba89779ee4f2555e920 100644 (file)
@@ -7,6 +7,13 @@
  */
 package org.opendaylight.yangtools.yang.binding;
 
+/**
+ * An {@link InstanceIdentifier}, which has a list key attached at its last path
+ * element.
+ *
+ * @param <T> Target data type
+ * @param <K> Target key type
+ */
 public class KeyedInstanceIdentifier<T extends Identifiable<K> & DataObject, K extends Identifier<T>> extends InstanceIdentifier<T> {
     private final K key;
 
@@ -15,6 +22,12 @@ public class KeyedInstanceIdentifier<T extends Identifiable<K> & DataObject, K e
         this.key = key;
     }
 
+    /**
+     * Return the key attached to this identifier. This method is equivalent to
+     * calling {@link InstanceIdentifier#keyOf(InstanceIdentifier)}.
+     *
+     * @return Key associated with this instance identifier.
+     */
     public final K getKey() {
         return key;
     }