X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fcds-access-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fcommands%2FAbstractReadTransactionRequest.java;fp=opendaylight%2Fmd-sal%2Fcds-access-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fcommands%2FAbstractReadTransactionRequest.java;h=ddc5fef25f2219ec3e60fe14b386f9e3a3c1eae1;hb=e4a1f1fa1f3efb4442c1141224b8a2df714efcb4;hp=0000000000000000000000000000000000000000;hpb=f7a0d624f5927875c9d937f07d73feb7b9970546;p=controller.git diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadTransactionRequest.java new file mode 100644 index 0000000000..ddc5fef25f --- /dev/null +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadTransactionRequest.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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.controller.cluster.access.commands; + +import akka.actor.ActorRef; +import com.google.common.annotations.Beta; +import com.google.common.base.MoreObjects.ToStringHelper; +import com.google.common.base.Preconditions; +import javax.annotation.Nonnull; +import org.opendaylight.controller.cluster.access.ABIVersion; +import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; + +/** + * Abstract base class for {@link TransactionRequest}s accessing data as visible in the isolated context of a particular + * transaction. The path of the data being accessed is returned via {@link #getPath()}. + * + * This class is visible outside of this package for the purpose of allowing common instanceof checks + * and simplified codepaths. + * + * @author Robert Varga + * + * @param Message type + */ +@Beta +public abstract class AbstractReadTransactionRequest> extends TransactionRequest { + private static final long serialVersionUID = 1L; + private final YangInstanceIdentifier path; + + AbstractReadTransactionRequest(final TransactionIdentifier identifier, final long sequence, final long retry, + final ActorRef replyTo, final YangInstanceIdentifier path) { + super(identifier, sequence, retry, replyTo); + this.path = Preconditions.checkNotNull(path); + } + + AbstractReadTransactionRequest(final T request, final ABIVersion version) { + super(request, version); + this.path = request.getPath(); + } + + AbstractReadTransactionRequest(final T request, final long retry) { + super(request, retry); + this.path = request.getPath(); + } + + public final @Nonnull YangInstanceIdentifier getPath() { + return path; + } + + @Override + protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) { + return super.addToStringAttributes(toStringHelper).add("path", path); + } + + @Override + protected abstract AbstractReadTransactionRequestProxyV1 externalizableProxy(final ABIVersion version); +}