X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FAbstractForwardedTransaction.java;h=dc81ce085ed4671f042fd523cf623df875b6191d;hb=3859df9beca8f13f1ff2b2744ed3470a1715bec3;hp=96a3f1cc3b7ead386165e1d530d6c2e7b0cccb15;hpb=8e42b08cb626a60919c145b2a46d94114c3905d6;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedTransaction.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedTransaction.java index 96a3f1cc3b..dc81ce085e 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedTransaction.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedTransaction.java @@ -7,35 +7,37 @@ */ package org.opendaylight.controller.md.sal.binding.impl; +import static java.util.Objects.requireNonNull; + +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.MoreExecutors; +import org.opendaylight.controller.md.sal.common.api.MappingCheckedFuture; import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadTransaction; 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; -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; - - +@Deprecated abstract class AbstractForwardedTransaction>> implements Delegator, Identifiable { private final T delegate; private final BindingToNormalizedNodeCodec codec; - 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() { return delegate.getIdentifier(); @@ -47,7 +49,8 @@ abstract class AbstractForwardedTransaction>> S getDelegateChecked(final Class txType) { + protected final >> + S getDelegateChecked(final Class txType) { Preconditions.checkState(txType.isInstance(delegate)); return (S) delegate; } @@ -56,13 +59,24 @@ abstract class AbstractForwardedTransaction CheckedFuture,ReadFailedException> doRead( + protected final CheckedFuture, ReadFailedException> doRead( final DOMDataReadTransaction readTx, final LogicalDatastoreType store, - final org.opendaylight.yangtools.yang.binding.InstanceIdentifier path) { + final InstanceIdentifier path) { + Preconditions.checkArgument(!path.isWildcarded(), "Invalid read of wildcarded path %s", path); return MappingCheckedFuture.create( - Futures.transform(readTx.read(store, codec.toNormalized(path)), - codec.deserializeFunction(path)), - ReadFailedException.MAPPER); + Futures.transform(readTx.read(store, codec.toYangInstanceIdentifierBlocking(path)), + result -> Optional.fromJavaUtil(codec.deserializeFunction(path).apply(result.toJavaUtil())), + MoreExecutors.directExecutor()), + ReadFailedException.MAPPER); + } + + protected final CheckedFuture doExists( + final DOMDataReadTransaction readTx, final LogicalDatastoreType store, + final InstanceIdentifier path) { + Preconditions.checkArgument(!path.isWildcarded(), "Invalid read of wildcarded path %s", path); + + return MappingCheckedFuture.create(readTx.exists(store, codec.toYangInstanceIdentifierBlocking(path)), + ReadFailedException.MAPPER); } }