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=a935a33a5eb26ee13371554165db996f390469b8;hp=cc9c6ebaa6e18bb20ee9e9245a4d34b8321733e0;hb=2c91a4687fefcbbbd3dbc5a2ce1aaf96019b34c7;hpb=2f034183cfcbaacf2a287f1ddf00d367674868af 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 cc9c6ebaa6..a935a33a5e 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 @@ -17,7 +17,6 @@ import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; -import org.eclipse.xtext.xbase.lib.Exceptions; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; @@ -79,17 +78,21 @@ public class AbstractForwardedTransaction apply(@Nullable final Optional> normalizedNode) { - try { - final DataObject dataObject = normalizedNode.isPresent() ? codec.toBinding(path, - normalizedNode.get()) : null; + if (normalizedNode.isPresent()) { + final DataObject dataObject; + try { + dataObject = codec.toBinding(path, normalizedNode.get()); + } catch (DeserializationException e) { + LOG.warn("Failed to create dataobject from node {}", normalizedNode.get(), e); + throw new IllegalStateException("Failed to create dataobject", e); + } + if (dataObject != null) { updateCache(store, path, dataObject); + return Optional.of(dataObject); } - return Optional.fromNullable(dataObject); - } catch (DeserializationException e) { - Exceptions.sneakyThrow(e); } - return null; + return Optional.absent(); } }); } @@ -108,10 +111,10 @@ public class AbstractForwardedTransaction> normalized = codec .toNormalizedNode(path, data); - org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalizedPath = normalized.getKey(); - ensureParentsByMerge(writeTransaction, store, normalized.getKey(), path); - LOG.debug("Tx: {} : Putting data {}",getDelegate().getIdentifier(),normalized.getKey()); - writeTransaction.put(store, normalized.getKey(), normalized.getValue()); + final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalizedPath = normalized.getKey(); + ensureParentsByMerge(writeTransaction, store, normalizedPath, path); + LOG.debug("Tx: {} : Putting data {}", getDelegate().getIdentifier(), normalizedPath); + writeTransaction.put(store, normalizedPath, normalized.getValue()); } protected void doMergeWithEnsureParents(final DOMDataReadWriteTransaction writeTransaction, @@ -120,10 +123,10 @@ public class AbstractForwardedTransaction> normalized = codec .toNormalizedNode(path, data); - org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalizedPath = normalized.getKey(); - ensureParentsByMerge(writeTransaction, store, normalized.getKey(), path); - LOG.debug("Tx: {} : Merge data {}",getDelegate().getIdentifier(),normalized.getKey()); - writeTransaction.merge(store, normalized.getKey(), normalized.getValue()); + final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalizedPath = normalized.getKey(); + ensureParentsByMerge(writeTransaction, store, normalizedPath, path); + LOG.debug("Tx: {} : Merge data {}",getDelegate().getIdentifier(),normalizedPath); + writeTransaction.merge(store, normalizedPath, normalized.getValue()); } private void ensureParentsByMerge(final DOMDataReadWriteTransaction writeTransaction,