import org.opendaylight.yangtools.yang.binding.ChildOf;
import org.opendaylight.yangtools.yang.binding.ChoiceIn;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.Identifier;
/**
* Intermediate Query builder stage, which allows the specification of the query result type to be built up via
*/
<N extends ChildOf<? super T>> @NonNull DescendantQueryBuilder<N> extractChild(Class<N> childClass);
+ /**
+ * Add a child path component to the specification of what needs to be extracted, specifying an exact match in
+ * a keyed list. This method, along with its alternatives, can be used to specify which object type to select from
+ * the root path.
+ *
+ * @param <N> List type
+ * @param <K> Key type
+ * @param listKey List key
+ * @return This builder
+ * @throws NullPointerException if childClass is null
+ */
+ <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>>
+ @NonNull DescendantQueryBuilder<N> extractChild(Class<@NonNull N> listItem, K listKey);
+
/**
* Add a child path component to the specification of what needs to be extracted. This method, along with its
* alternatives, can be used to specify which object type to select from the root path.
import org.opendaylight.yangtools.yang.binding.ChildOf;
import org.opendaylight.yangtools.yang.binding.ChoiceIn;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.binding.TypeObject;
import org.opendaylight.yangtools.yang.common.Empty;
import org.opendaylight.yangtools.yang.common.Uint16;
<C extends ChoiceIn<? super T> & DataObject, N extends ChildOf<? super C>>
@NonNull MatchBuilderPath<O, N> extractChild(Class<C> caseClass, Class<N> childClass);
+ /**
+ * Add a child path component to the specification of what needs to be extracted, specifying an exact match in
+ * a keyed list. This method, along with its alternatives, can be used to specify which object type to select from
+ * the root path.
+ *
+ * @param <N> List type
+ * @param <K> Key type
+ * @param listKey List key
+ * @return This builder
+ * @throws NullPointerException if childClass is null
+ */
+ <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>>
+ @NonNull MatchBuilderPath<O, N> extractChild(Class<@NonNull N> listItem, K listKey);
+
/**
* Match an {@code empty} leaf's value.
*
*/
package org.opendaylight.mdsal.binding.dom.adapter.query;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.query.DescendantQueryBuilder;
import org.opendaylight.mdsal.binding.api.query.MatchBuilderPath;
import org.opendaylight.mdsal.binding.api.query.QueryExpression;
import org.opendaylight.yangtools.yang.binding.ChildOf;
import org.opendaylight.yangtools.yang.binding.ChoiceIn;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
return (DefaultDescendantQueryBuilder<R, N>) this;
}
+ @Override
+ @SuppressWarnings("unchecked")
+ public <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>>
+ DescendantQueryBuilder<N> extractChild(final Class<@NonNull N> listItem, final K listKey) {
+ childPath.child(listItem, listKey);
+ return (DefaultDescendantQueryBuilder<R, N>) this;
+ }
+
@Override
public MatchBuilderPath<T, T> matching() {
final InstanceIdentifier<T> selectPath = childPath.build();
import org.opendaylight.yangtools.yang.binding.ChildOf;
import org.opendaylight.yangtools.yang.binding.ChoiceIn;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
import org.opendaylight.yangtools.yang.binding.TypeObject;
return (MatchBuilderPath<O, N>) this;
}
+ @Override
+ @SuppressWarnings("unchecked")
+ public <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>>
+ MatchBuilderPath<O, N> extractChild(final Class<@NonNull N> listItem, final K listKey) {
+ target.child(listItem, listKey);
+ return (MatchBuilderPath<O, N>) this;
+ }
+
@Override
public ValueMatchBuilder<O, Empty> leaf(final EmptyLeafReference<T> methodRef) {
return defaultFor(methodRef);