X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2Factors%2Fdds%2FClientSnapshot.java;h=5ba842aae3635fc6514c0a12b5dd59efd61fcbb3;hp=482d1a5b0313156c046e78fa259882ff157bf274;hb=refs%2Fchanges%2F78%2F100478%2F3;hpb=5cb0787412ab63a3aa5dcc044511e1ce569662cf diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java index 482d1a5b03..5ba842aae3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java @@ -8,10 +8,10 @@ package org.opendaylight.controller.cluster.databroker.actors.dds; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; +import java.util.Optional; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.controller.cluster.datastore.utils.RootScatterGather; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -28,20 +28,21 @@ public class ClientSnapshot extends AbstractClientHandle exists(final YangInstanceIdentifier path) { + return ensureProxy(path).exists(path); } - private AbstractProxyTransaction ensureSnapshotProxy(final YangInstanceIdentifier path) { - return ensureProxy(path, this::createProxy); + public FluentFuture> read(final YangInstanceIdentifier path) { + return path.isEmpty() ? readRoot() : ensureProxy(path).read(path); } - public final CheckedFuture exists(final YangInstanceIdentifier path) { - return ensureSnapshotProxy(path).exists(path); + private FluentFuture> readRoot() { + return RootScatterGather.gather(parent().actorUtils(), ensureAllProxies() + .map(proxy -> proxy.read(YangInstanceIdentifier.empty()))); } - public final CheckedFuture>, ReadFailedException> read( - final YangInstanceIdentifier path) { - return ensureSnapshotProxy(path).read(path); + @Override + final AbstractProxyTransaction createProxy(final Long shard) { + return parent().createSnapshotProxy(getIdentifier(), shard); } }