import org.opendaylight.mdsal.dom.api.query.DOMQuery;
import org.opendaylight.mdsal.dom.api.query.DOMQueryResult;
import org.opendaylight.mdsal.dom.spi.query.DOMQueryEvaluator;
-import org.opendaylight.mdsal.dom.spi.query.EagerDOMQueryResult;
import org.opendaylight.yangtools.concepts.Delegator;
import org.opendaylight.yangtools.concepts.Identifiable;
import org.opendaylight.yangtools.yang.binding.DataObject;
LOG.trace("Fallback evaluation of {} on {}", domQuery, readOps);
return readOps.read(store, domQuery.getRoot())
.transform(
- node -> node.map(data -> DOMQueryEvaluator.evaluateOn(domQuery, data)).orElse(EagerDOMQueryResult.of()),
+ node -> node.map(data -> DOMQueryEvaluator.evaluateOn(domQuery, data)).orElse(DOMQueryResult.of()),
// TODO: execute on a dedicated thread pool
MoreExecutors.directExecutor());
}
package org.opendaylight.mdsal.dom.api.query;
import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Map.Entry;
import java.util.stream.Collectors;
default List<? extends Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items() {
return stream().collect(Collectors.toUnmodifiableList());
}
+
+ static DOMQueryResult of() {
+ return SimpleDOMQueryResult.EMPTY_INSTANCE;
+ }
+
+ static DOMQueryResult of(final Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> item) {
+ return new SimpleDOMQueryResult(ImmutableList.of(item));
+ }
+
+ static DOMQueryResult of(final List<Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items) {
+ return items.isEmpty() ? of() : new SimpleDOMQueryResult(items);
+ }
}
* 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.mdsal.dom.spi.query;
+package org.opendaylight.mdsal.dom.api.query;
-import com.google.common.annotations.Beta;
+import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Spliterator;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.mdsal.dom.api.query.DOMQueryResult;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-@Beta
@NonNullByDefault
-public final class EagerDOMQueryResult implements DOMQueryResult {
- private static final EagerDOMQueryResult EMPTY_INSTANCE = new EagerDOMQueryResult(ImmutableList.of());
+final class SimpleDOMQueryResult implements DOMQueryResult {
+ static final SimpleDOMQueryResult EMPTY_INSTANCE = new SimpleDOMQueryResult(ImmutableList.of());
private final ImmutableList<Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items;
- private EagerDOMQueryResult(final List<? extends Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items) {
- this.items = ImmutableList.copyOf(items);
+ SimpleDOMQueryResult(final ImmutableList<Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items) {
+ this.items = items;
}
- public static EagerDOMQueryResult of() {
- return EMPTY_INSTANCE;
- }
-
- public static EagerDOMQueryResult of(final Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> item) {
- return new EagerDOMQueryResult(ImmutableList.of(item));
- }
-
- public static EagerDOMQueryResult of(
- final List<? extends Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items) {
- return items.isEmpty() ? of() : new EagerDOMQueryResult(items);
+ SimpleDOMQueryResult(final List<Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items) {
+ this(ImmutableList.copyOf(items));
}
@Override
public List<? extends Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> items() {
return items;
}
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this).add("items", items).toString();
+ }
}
for (PathArgument arg : query.getRoot().getPathArguments()) {
final Optional<NormalizedNode<?, ?>> next = NormalizedNodes.findNode(root, arg);
if (next.isEmpty()) {
- return EagerDOMQueryResult.of();
+ return DOMQueryResult.of();
}
evalRoot = next.orElseThrow();
}
// FIXME: this is eager evaluation, we should be doing lazy traversal
final List<Entry<YangInstanceIdentifier, NormalizedNode<?, ?>>> result = new ArrayList<>();
evalPath(result, new ArrayDeque<>(query.getRoot().getPathArguments()), remaining, data, query);
- return EagerDOMQueryResult.of(result);
+ return DOMQueryResult.of(result);
}
private static void evalPath(final List<Entry<YangInstanceIdentifier, NormalizedNode<?,?>>> result,
}
private static DOMQueryResult evalSingle(final NormalizedNode<?, ?> data, final DOMQuery query) {
- return matches(data, query) ? EagerDOMQueryResult.of()
- : EagerDOMQueryResult.of(new SimpleImmutableEntry<>(query.getRoot(), data));
+ return matches(data, query) ? DOMQueryResult.of()
+ : DOMQueryResult.of(new SimpleImmutableEntry<>(query.getRoot(), data));
}
private static boolean matches(final NormalizedNode<?, ?> data, final DOMQuery query) {
import org.opendaylight.mdsal.dom.api.query.DOMQuery;
import org.opendaylight.mdsal.dom.api.query.DOMQueryResult;
import org.opendaylight.mdsal.dom.spi.query.DOMQueryEvaluator;
-import org.opendaylight.mdsal.dom.spi.query.EagerDOMQueryResult;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
*/
default @NonNull FluentFuture<DOMQueryResult> execute(final DOMQuery query) {
return read(query.getRoot()).transform(
- node -> node.map(data -> DOMQueryEvaluator.evaluateOn(query, data)).orElse(EagerDOMQueryResult.of()),
+ node -> node.map(data -> DOMQueryEvaluator.evaluateOn(query, data)).orElse(DOMQueryResult.of()),
MoreExecutors.directExecutor());
}
}