X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2Factors%2Fdds%2FDistributedDataStoreClientActor.java;h=1701d4c894b5f7fddf04ec9511e343992d14d28b;hb=abaef4a5ae37f27542155457fe7306a4662b1eeb;hp=11aeae4f9212a09e7f2030392930cee85678b4e6;hpb=b08cf9e64783ce7db00b6e41f2720f56b726d3b5;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientActor.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientActor.java index 11aeae4f92..1701d4c894 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientActor.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientActor.java @@ -7,68 +7,35 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -import akka.actor.ActorRef; import akka.actor.Props; -import akka.pattern.ExplicitAskSupport; -import akka.util.Timeout; -import com.google.common.base.Preconditions; -import com.google.common.base.Throwables; -import java.util.concurrent.TimeUnit; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.controller.cluster.access.client.AbstractClientActor; +import org.opendaylight.controller.cluster.access.client.ClientActorContext; import org.opendaylight.controller.cluster.access.concepts.FrontendIdentifier; import org.opendaylight.controller.cluster.access.concepts.FrontendType; import org.opendaylight.controller.cluster.access.concepts.MemberName; -import org.opendaylight.controller.cluster.datastore.actors.client.AbstractClientActor; -import org.opendaylight.controller.cluster.datastore.actors.client.ClientActorContext; -import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import scala.Function1; -import scala.concurrent.Await; -import scala.concurrent.duration.Duration; -import scala.runtime.AbstractFunction1; +import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; /** * A {@link AbstractClientActor} which acts as the point of contact for DistributedDataStore. * * @author Robert Varga */ -public final class DistributedDataStoreClientActor extends AbstractClientActor { - // Unfortunately Akka's explicit ask pattern does not work with its Java API, as it fails to invoke passed message. - // In order to make this work for now, we tap directly into ExplicitAskSupport and use a Scala function instead - // of akka.japi.Function. - private static final ExplicitAskSupport ASK_SUPPORT = akka.pattern.extended.package$.MODULE$; - private static final Function1 GET_CLIENT_FACTORY = new AbstractFunction1() { - @Override - public Object apply(final ActorRef askSender) { - return new GetClientRequest(askSender); - } - }; - - private final ActorContext actorContext; - - private DistributedDataStoreClientActor(final FrontendIdentifier frontendId, final ActorContext actorContext) { - super(frontendId); - this.actorContext = Preconditions.checkNotNull(actorContext); +public final class DistributedDataStoreClientActor extends AbstractDataStoreClientActor { + private DistributedDataStoreClientActor(final FrontendIdentifier frontendId, final ActorUtils actorUtils) { + super(frontendId, actorUtils); } @Override - protected DistributedDataStoreClientBehavior initialBehavior(final ClientActorContext context) { - return new DistributedDataStoreClientBehavior(context, actorContext); + AbstractDataStoreClientBehavior initialBehavior(final ClientActorContext context, final ActorUtils actorUtils) { + return new DistributedDataStoreClientBehavior(context, actorUtils); } - public static Props props(final @Nonnull MemberName memberName, @Nonnull final String storeName, final ActorContext ctx) { + public static Props props(final @NonNull MemberName memberName, final @NonNull String storeName, + final @NonNull ActorUtils ctx) { final String name = "datastore-" + storeName; final FrontendIdentifier frontendId = FrontendIdentifier.create(memberName, FrontendType.forName(name)); return Props.create(DistributedDataStoreClientActor.class, () -> new DistributedDataStoreClientActor(frontendId, ctx)); } - - public static DistributedDataStoreClient getDistributedDataStoreClient(final @Nonnull ActorRef actor, - final long timeout, final TimeUnit unit) { - try { - return (DistributedDataStoreClient) Await.result(ASK_SUPPORT.ask(actor, GET_CLIENT_FACTORY, - Timeout.apply(timeout, unit)), Duration.Inf()); - } catch (Exception e) { - throw Throwables.propagate(e); - } - } }