X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FAbstractForwardedTransaction.java;h=24b7ff03cee1557869508a0345e88f066485cd2b;hp=088e2283d7446757d1262a7b3a8a575afabf5268;hb=a6bdbfafe60b9aeac056187f27229e476fbf88bf;hpb=ac17f540b6d2a1c52cf8d0a7f2f99e37ab0bd268 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 088e2283d7..24b7ff03ce 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 @@ -11,13 +11,14 @@ 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; @@ -29,7 +30,7 @@ abstract class AbstractForwardedTransaction>> S getDelegateChecked(final Class txType) { + protected final >> + S getDelegateChecked(final Class txType) { Preconditions.checkState(txType.isInstance(delegate)); return (S) delegate; } @@ -55,13 +57,24 @@ abstract class AbstractForwardedTransaction CheckedFuture,ReadFailedException> doRead( + protected final CheckedFuture, ReadFailedException> doRead( final DOMDataReadTransaction readTx, final LogicalDatastoreType store, 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); } }