X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=netconf%2Fmdsal-netconf-notification%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fnetconf%2Fmdsal%2Fnotification%2FNotificationToMdsalWriter.java;h=d19fa0b77746980800f62d1c829cc10ed33e352e;hb=1d91e1bbe29d0da6ea427a5d0837064c8a3d5134;hp=1535b987f983eb718aee58984bc0511d78f1d755;hpb=9c56fbbb1c62243df9baa3b95140153f91ffdde9;p=netconf.git diff --git a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java index 1535b987f9..d19fa0b777 100644 --- a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java +++ b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java @@ -5,16 +5,15 @@ * 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.config.yang.netconf.mdsal.notification; -import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import com.google.common.util.concurrent.MoreExecutors; +import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.notifications.NetconfNotificationCollector; import org.opendaylight.netconf.notifications.NotificationRegistration; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType; @@ -34,6 +33,8 @@ public final class NotificationToMdsalWriter implements AutoCloseable, NetconfNo .NetconfNotificationStreamListener { private static final Logger LOG = LoggerFactory.getLogger(NotificationToMdsalWriter.class); + private static final InstanceIdentifier STREAMS = InstanceIdentifier.builder(Netconf.class) + .child(Streams.class).build(); private final NetconfNotificationCollector netconfNotificationCollector; private final DataBroker dataBroker; @@ -49,19 +50,18 @@ public final class NotificationToMdsalWriter implements AutoCloseable, NetconfNo public void close() { final WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.delete(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(Netconf.class)); - final CheckedFuture submit = tx.submit(); - Futures.addCallback(submit, new FutureCallback() { + tx.commit().addCallback(new FutureCallback() { @Override - public void onSuccess(Void avoid) { + public void onSuccess(final CommitInfo info) { LOG.debug("Streams cleared successfully"); } @Override - public void onFailure(Throwable throwable) { + public void onFailure(final Throwable throwable) { LOG.warn("Unable to clear streams", throwable); } - }); + }, MoreExecutors.directExecutor()); notificationRegistration.close(); } @@ -74,36 +74,33 @@ public final class NotificationToMdsalWriter implements AutoCloseable, NetconfNo } @Override - public void onStreamRegistered(Stream stream) { + public void onStreamRegistered(final Stream stream) { final WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); - final InstanceIdentifier streamIdentifier = InstanceIdentifier.create(Netconf.class).child(Streams.class) - .builder().child(Stream.class, stream.getKey()).build(); + final InstanceIdentifier streamIdentifier = STREAMS.child(Stream.class, stream.key()); tx.merge(LogicalDatastoreType.OPERATIONAL, streamIdentifier, stream, true); try { - tx.submit().checkedGet(); - LOG.debug("Stream %s registered successfully.", stream.getName()); - } catch (TransactionCommitFailedException e) { - LOG.warn("Unable to register stream.", e); + tx.commit().get(); + LOG.debug("Stream {} registered successfully.", stream.getName()); + } catch (InterruptedException | ExecutionException e) { + LOG.warn("Unable to register stream {}.", stream, e); } } @Override - public void onStreamUnregistered(StreamNameType stream) { + public void onStreamUnregistered(final StreamNameType stream) { final WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); - final StreamKey streamKey = new StreamKey(stream); - final InstanceIdentifier streamIdentifier = InstanceIdentifier.create(Netconf.class).child(Streams.class) - .builder().child(Stream.class, streamKey).build(); + final InstanceIdentifier streamIdentifier = STREAMS.child(Stream.class, new StreamKey(stream)); tx.delete(LogicalDatastoreType.OPERATIONAL, streamIdentifier); try { - tx.submit().checkedGet(); - LOG.debug("Stream %s unregistered successfully.", stream); - } catch (TransactionCommitFailedException e) { - LOG.warn("Unable to unregister stream", e); + tx.commit().get(); + LOG.debug("Stream {} unregistered successfully.", stream); + } catch (InterruptedException | ExecutionException e) { + LOG.warn("Unable to unregister stream {}", stream, e); } } }