Revert "WIP: Bump upstreams"
[openflowplugin.git] / applications / forwardingrules-manager / src / main / java / org / opendaylight / openflowplugin / applications / frm / impl / TableForwarder.java
index 79e17883d949b7e8bc194a6da29f234f01b76428..ebfb2ae744c6f7c1b385ba1be65d33f1cab9c257 100644 (file)
@@ -10,10 +10,8 @@ package org.opendaylight.openflowplugin.applications.frm.impl;
 import com.google.common.util.concurrent.Futures;
 import java.util.Collections;
 import java.util.concurrent.Future;
-import org.opendaylight.infrautils.utils.concurrent.JdkFutures;
+import org.opendaylight.infrautils.utils.concurrent.LoggingFutures;
 import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
-import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.openflowplugin.applications.frm.ForwardingRulesManager;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
@@ -21,12 +19,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.table.update.OriginalTableBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.table.update.UpdatedTableBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
@@ -35,25 +31,10 @@ import org.slf4j.LoggerFactory;
 public class TableForwarder extends AbstractListeningCommiter<TableFeatures> {
 
     private static final Logger LOG = LoggerFactory.getLogger(TableForwarder.class);
-    private ListenerRegistration<TableForwarder> listenerRegistration;
 
-    public TableForwarder(final ForwardingRulesManager manager, final DataBroker db) {
-        super(manager, db);
-    }
-
-    @SuppressWarnings("IllegalCatch")
-    @Override
-    public void registerListener() {
-        final DataTreeIdentifier<TableFeatures> treeId = DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION,
-                getWildCardPath());
-
-        try {
-            listenerRegistration = dataBroker.registerDataTreeChangeListener(treeId, TableForwarder.this);
-        } catch (final Exception e) {
-            LOG.warn("FRM Table DataTreeChangeListener registration fail!");
-            LOG.debug("FRM Table DataTreeChangeListener registration fail ..", e);
-            throw new IllegalStateException("TableForwarder startup fail! System needs restart.", e);
-        }
+    public TableForwarder(final ForwardingRulesManager manager, final DataBroker db,
+                          final ListenerRegistrationHelper registrationHelper) {
+        super(manager, db, registrationHelper);
     }
 
     @Override
@@ -104,21 +85,21 @@ public class TableForwarder extends AbstractListeningCommiter<TableFeatures> {
 
         builder.setTransactionUri(new Uri(provider.getNewTransactionId()));
 
-        builder.setUpdatedTable(
-                new UpdatedTableBuilder().setTableFeatures(Collections.singletonList(updatedTableFeatures)).build());
+        builder.setUpdatedTable(new UpdatedTableBuilder()
+            .setTableFeatures(Collections.singletonMap(updatedTableFeatures.key(), updatedTableFeatures))
+            .build());
 
-        builder.setOriginalTable(
-                new OriginalTableBuilder().setTableFeatures(Collections.singletonList(originalTableFeatures)).build());
+        builder.setOriginalTable(new OriginalTableBuilder()
+            .setTableFeatures(Collections.singletonMap(originalTableFeatures.key(), originalTableFeatures))
+            .build());
         LOG.debug("Invoking SalTableService ");
 
         if (this.provider.getSalTableService() != null) {
             LOG.debug(" Handle to SalTableServices {}", this.provider.getSalTableService());
         }
 
-        final Future<RpcResult<UpdateTableOutput>> resultFuture =
-                this.provider.getSalTableService().updateTable(builder.build());
-        JdkFutures.addErrorLogging(resultFuture, LOG, "updateTable");
-
+        LoggingFutures.addErrorLogging(this.provider.getSalTableService().updateTable(builder.build()), LOG,
+            "updateTable");
     }
 
     @Override