X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fadapter%2FAbstractForwardedTransaction.java;h=28b63ec8b9e16856fb21b1bf423b301d194c2c8f;hb=3aa65296b24cb2fe7042a99e581702278451bc35;hp=6833f6ed8c5194819aaa0b8d0cb67fb6f889f49f;hpb=ee479de332c71ae6811a9f307b0e7a3fe5e50861;p=mdsal.git diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/AbstractForwardedTransaction.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/AbstractForwardedTransaction.java index 6833f6ed8c..28b63ec8b9 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/AbstractForwardedTransaction.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/AbstractForwardedTransaction.java @@ -7,63 +7,64 @@ */ package org.opendaylight.mdsal.binding.dom.adapter; -import org.opendaylight.mdsal.common.api.AsyncTransaction; -import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.mdsal.common.api.ReadFailedException; +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkState; +import static java.util.Objects.requireNonNull; -import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.FluentFuture; +import com.google.common.util.concurrent.MoreExecutors; +import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations; +import org.opendaylight.mdsal.dom.api.DOMDataTreeTransaction; import org.opendaylight.yangtools.concepts.Delegator; import org.opendaylight.yangtools.concepts.Identifiable; -import org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -abstract class AbstractForwardedTransaction>> - implements Delegator, Identifiable { +abstract class AbstractForwardedTransaction implements Delegator, + Identifiable { - private final T delegate; - private final BindingToNormalizedNodeCodec codec; + private final @NonNull BindingToNormalizedNodeCodec codec; + private final @NonNull T delegate; - public AbstractForwardedTransaction(final T delegateTx, final BindingToNormalizedNodeCodec codec) { - this.delegate = Preconditions.checkNotNull(delegateTx, "Delegate must not be null"); - this.codec = Preconditions.checkNotNull(codec, "Codec must not be null"); + AbstractForwardedTransaction(final T delegateTx, final BindingToNormalizedNodeCodec codec) { + this.delegate = requireNonNull(delegateTx, "Delegate must not be null"); + this.codec = requireNonNull(codec, "Codec must not be null"); } - @Override - public final Object getIdentifier() { + public final Object getIdentifier() { return delegate.getIdentifier(); } @Override - public final T getDelegate() { + public final T getDelegate() { return delegate; } - @SuppressWarnings("unchecked") - protected final >> S getDelegateChecked(final Class txType) { - Preconditions.checkState(txType.isInstance(delegate)); - return (S) delegate; + protected final S getDelegateChecked(final Class txType) { + checkState(txType.isInstance(delegate)); + return txType.cast(delegate); } protected final BindingToNormalizedNodeCodec getCodec() { return codec; } - protected final CheckedFuture,ReadFailedException> doRead( - final DOMDataTreeReadTransaction readTx, final LogicalDatastoreType store, + protected final @NonNull FluentFuture> doRead( + final DOMDataTreeReadOperations readOps, final LogicalDatastoreType store, final InstanceIdentifier path) { - Preconditions.checkArgument(!path.isWildcarded(), "Invalid read of wildcarded path %s", path); + checkArgument(!path.isWildcarded(), "Invalid read of wildcarded path %s", path); + + return readOps.read(store, codec.toYangInstanceIdentifierBlocking(path)) + .transform(codec.getCodecRegistry().deserializeFunction(path)::apply, MoreExecutors.directExecutor()); + } - return MappingCheckedFuture.create( - Futures.transform(readTx.read(store, codec.toYangInstanceIdentifierBlocking(path)), - codec.deserializeFunction(path)), - ReadFailedException.MAPPER); + protected final @NonNull FluentFuture doExists(final DOMDataTreeReadOperations readOps, + final LogicalDatastoreType store, final InstanceIdentifier path) { + checkArgument(!path.isWildcarded(), "Invalid exists of wildcarded path %s", path); + return readOps.exists(store, codec.toYangInstanceIdentifierBlocking(path)); } }