import org.opendaylight.mdsal.binding.api.query.QueryResult;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
-import org.opendaylight.mdsal.dom.api.query.DOMQuery;
-import org.opendaylight.mdsal.dom.api.query.DOMQueryLike;
import org.opendaylight.mdsal.dom.spi.query.DOMQueryEvaluator;
import org.opendaylight.yangtools.yang.binding.ChildOf;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@Beta
public final class SimpleQueryExecutor implements QueryExecutor {
- private final BindingCodecTree codec;
- private final NormalizedNode<?, ?> root;
+ private final NormalizedNode root;
- public SimpleQueryExecutor(final BindingCodecTree codec, final NormalizedNode<?, ?> root) {
- this.codec = requireNonNull(codec);
+ public SimpleQueryExecutor(final NormalizedNode root) {
this.root = requireNonNull(root);
}
@Override
public <T extends @NonNull DataObject> QueryResult<T> executeQuery(final QueryExpression<T> query) {
- checkArgument(query instanceof DOMQueryLike, "Unsupported expression %s", query);
- final DOMQuery domQuery = ((DOMQueryLike) query).asDOMQuery();
- return new DefaultQueryResult<>(codec, DOMQueryEvaluator.evaluateOnRoot(domQuery, root));
+ checkArgument(query instanceof DefaultQuery, "Unsupported expression %s", query);
+ final DefaultQuery<T> defaultQuery = (DefaultQuery<T>) query;
+ return defaultQuery.toQueryResult(DOMQueryEvaluator.evaluateOnRoot(defaultQuery.asDOMQuery(), root));
}
public static @NonNull Builder builder(final BindingCodecTree codec) {
return new Builder(codec);
}
- public static final class Builder implements org.opendaylight.yangtools.concepts.Builder<SimpleQueryExecutor> {
+ public static final class Builder {
private final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> rootBuilder = Builders.containerBuilder()
.withNodeIdentifier(new NodeIdentifier(SchemaContext.NAME));
private final BindingCodecTree codec;
}
public <T extends ChildOf<? extends DataRoot>> @NonNull Builder add(final @NonNull T data) {
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({"rawtypes", "unchecked"})
final BindingDataObjectCodecTreeNode<T> dataCodec = (BindingDataObjectCodecTreeNode<T>)
- codec.getSubtreeCodec(InstanceIdentifier.create(data.implementedInterface()));
- rootBuilder.withChild((DataContainerChild<?, ?>) verifyNotNull(dataCodec).serialize(data));
+ codec.getSubtreeCodec(InstanceIdentifier.create((Class) data.implementedInterface()));
+ rootBuilder.withChild((DataContainerChild) verifyNotNull(dataCodec).serialize(data));
return this;
}
- @Override
- public SimpleQueryExecutor build() {
- return new SimpleQueryExecutor(codec, rootBuilder.build());
+ /**
+ * Build an instance of {@link SimpleQueryExecutor}.
+ *
+ * @return An {@link SimpleQueryExecutor} instance
+ */
+ public @NonNull SimpleQueryExecutor build() {
+ return new SimpleQueryExecutor(rootBuilder.build());
}
}
}