Fix findbugs violations in southbound-impl 26/69826/2
authorTom Pantelis <tompantelis@gmail.com>
Thu, 22 Mar 2018 16:24:47 +0000 (12:24 -0400)
committerTom Pantelis <tompantelis@gmail.com>
Fri, 23 Mar 2018 13:33:08 +0000 (09:33 -0400)
- Method invokes inefficient Number constructor; use static valueOf instead
- Inefficient use of keySet iterator instead of entrySet iterator
- Reliance on default encoding
- Method ignores exceptional return value
- Should be a static inner class
- Private method is never called
- Method invokes inefficient Number constructor; use static valueOf instead
- Return value of method without side effect is ignored
- Result of integer multiplication cast to long
- Dead store to local variable
- Write to static field from instance method
- Parameter must be non-null but is marked as nullable
- Redundant nullcheck of value known to be non-null

Change-Id: Ieba8b20d01a47d6b245bb2752f004aa18fd08469
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
18 files changed:
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbConnectionManager.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/AutoAttachRemovedCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/AutoAttachUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/BridgeOperationalState.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/QosUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/QueueUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/TerminationPointUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/reconciliation/ReconciliationManager.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/reconciliation/connection/ConnectionReconciliationTask.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OpenVSwitchUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbAutoAttachUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbBridgeUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortRemoveCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbQosUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbQueueUpdateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/TransactionInvokerImpl.java

index bfbb7964f450ce465097e732435a0e3eabf301d0..c92894de3e34a8111e7f48085e994bd6d223aa8c 100644 (file)
@@ -14,7 +14,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
-
+import com.google.common.util.concurrent.MoreExecutors;
 import java.net.ConnectException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -26,7 +26,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.clustering.CandidateAlreadyRegisteredException;
@@ -106,9 +105,8 @@ public class OvsdbConnectionManager implements OvsdbConnectionListener, AutoClos
                 externalClient.getConnectionInfo().getRemotePort(),
                 externalClient.getConnectionInfo().getLocalAddress(),
                 externalClient.getConnectionInfo().getLocalPort());
-        List<String> databases = new ArrayList<>();
         try {
-            databases = externalClient.getDatabases().get(DB_FETCH_TIMEOUT, TimeUnit.MILLISECONDS);
+            List<String> databases = externalClient.getDatabases().get(DB_FETCH_TIMEOUT, TimeUnit.MILLISECONDS);
             if (databases.contains(SouthboundConstants.OPEN_V_SWITCH)) {
                 OvsdbConnectionInstance client = connectedButCallBacksNotRegistered(externalClient);
                 // Register Cluster Ownership for ConnectionInfo
@@ -584,7 +582,7 @@ public class OvsdbConnectionManager implements OvsdbConnectionListener, AutoClos
                 }
                 Futures.addCallback(readNodeFuture, new FutureCallback<Optional<Node>>() {
                     @Override
-                    public void onSuccess(@Nullable Optional<Node> node) {
+                    public void onSuccess(@Nonnull Optional<Node> node) {
                         if (node.isPresent()) {
                             LOG.info("Disconnected/Failed connection {} was controller initiated, attempting "
                                     + "reconnection", ovsdbNode.getConnectionInfo());
@@ -600,7 +598,7 @@ public class OvsdbConnectionManager implements OvsdbConnectionListener, AutoClos
                     public void onFailure(Throwable throwable) {
                         LOG.warn("Read Config/DS for Node failed! {}", iid, throwable);
                     }
-                });
+                }, MoreExecutors.directExecutor());
                 break;
             }
             default:
@@ -616,7 +614,7 @@ public class OvsdbConnectionManager implements OvsdbConnectionListener, AutoClos
         reconciliationManager.enqueue(task);
     }
 
-    private class OvsdbDeviceEntityOwnershipListener implements EntityOwnershipListener {
+    private static class OvsdbDeviceEntityOwnershipListener implements EntityOwnershipListener {
         private final OvsdbConnectionManager cm;
         private final EntityOwnershipListenerRegistration listenerRegistration;
 
index cd712e2924023ba770cae37eb1bb4aa388f2b24e..e1dc95bfa6d4ce8c3e03ad31007ccc5dad2f4276 100644 (file)
@@ -9,12 +9,11 @@ package org.opendaylight.ovsdb.southbound;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
-
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicBoolean;
-
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
@@ -27,7 +26,6 @@ import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipC
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListener;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListenerRegistration;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
-import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipState;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -53,6 +51,8 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
         return db;
     }
 
+    // FIXME: get rid of this static
+    @SuppressFBWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD")
     private static DataBroker db;
     private OvsdbConnectionManager cm;
     private TransactionInvoker txInvoker;
@@ -63,7 +63,7 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
     private final OvsdbConnection ovsdbConnection;
     private final InstanceIdentifierCodec instanceIdentifierCodec;
     private static final String SKIP_MONITORING_MANAGER_STATUS_PARAM = "skip-monitoring-manager-status";
-    private AtomicBoolean registered = new AtomicBoolean(false);
+    private final AtomicBoolean registered = new AtomicBoolean(false);
     private ListenerRegistration<SouthboundProvider> operTopologyRegistration;
 
     public SouthboundProvider(final DataBroker dataBroker,
@@ -97,7 +97,6 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
         //register instance entity to get the ownership of the provider
         Entity instanceEntity = new Entity(ENTITY_TYPE, ENTITY_TYPE);
         try {
-            Optional<EntityOwnershipState> ownershipStateOpt = entityOwnershipService.getOwnershipState(instanceEntity);
             registration = entityOwnershipService.registerCandidate(instanceEntity);
         } catch (CandidateAlreadyRegisteredException e) {
             LOG.warn("OVSDB Southbound Provider instance entity {} was already "
@@ -107,7 +106,7 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
                 .create(NetworkTopology.class)
                 .child(Topology.class, new TopologyKey(SouthboundConstants.OVSDB_TOPOLOGY_ID));
         DataTreeIdentifier<Topology> treeId =
-                new DataTreeIdentifier<Topology>(LogicalDatastoreType.OPERATIONAL, path);
+                new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, path);
 
         LOG.trace("Registering listener for path {}", treeId);
         operTopologyRegistration = db.registerDataTreeChangeListener(treeId, this);
@@ -179,7 +178,7 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
         }
     }
 
-    private class SouthboundPluginInstanceEntityOwnershipListener implements EntityOwnershipListener {
+    private static class SouthboundPluginInstanceEntityOwnershipListener implements EntityOwnershipListener {
         private final SouthboundProvider sp;
         private final EntityOwnershipListenerRegistration listenerRegistration;
 
index 6c04338797180653e09441a82b50ed3e7bf0413a..4fcb64aeb0e4fc1c958a7a523480d89c6faf2235 100644 (file)
@@ -11,6 +11,7 @@ package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
 import com.google.common.base.Optional;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -41,6 +42,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@SuppressFBWarnings("UPM_UNCALLED_PRIVATE_METHOD")
 public class AutoAttachRemovedCommand implements TransactCommand {
     private static final Logger LOG = LoggerFactory.getLogger(AutoAttachRemovedCommand.class);
 
index cde69d5fefe620f2a96f4167802465f784576be8..8e851bd04b8ff656e30831f09cc0e6c176a1a657 100644 (file)
@@ -11,6 +11,7 @@ package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
 import com.google.common.base.Optional;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -50,6 +51,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@SuppressFBWarnings("UPM_UNCALLED_PRIVATE_METHOD")
 public class AutoAttachUpdateCommand implements TransactCommand {
     private static final Logger LOG = LoggerFactory.getLogger(AutoAttachUpdateCommand.class);
 
index 8804bc34a638275fde538117e9a7abf4f1c8adbb..dc870479faad4237e985bd0732d77bafa45af4e5 100644 (file)
@@ -44,18 +44,16 @@ public class BridgeOperationalState {
         try (ReadOnlyTransaction transaction = db.newReadOnlyTransaction()) {
             Map<InstanceIdentifier<Node>, Node> nodeCreateOrUpdate =
                     TransactUtils.extractCreatedOrUpdatedOrRemoved(changes, Node.class);
-            if (nodeCreateOrUpdate != null) {
-                for (Entry<InstanceIdentifier<Node>, Node> entry: nodeCreateOrUpdate.entrySet()) {
-                    CheckedFuture<Optional<Node>, ReadFailedException> nodeFuture =
-                            transaction.read(LogicalDatastoreType.OPERATIONAL, entry.getKey());
-                    try {
-                        Optional<Node> nodeOptional = nodeFuture.get();
-                        if (nodeOptional.isPresent()) {
-                            operationalNodes.put(entry.getKey(), nodeOptional.get());
-                        }
-                    } catch (InterruptedException | ExecutionException e) {
-                        LOG.warn("Error reading from datastore",e);
+            for (Entry<InstanceIdentifier<Node>, Node> entry: nodeCreateOrUpdate.entrySet()) {
+                CheckedFuture<Optional<Node>, ReadFailedException> nodeFuture =
+                        transaction.read(LogicalDatastoreType.OPERATIONAL, entry.getKey());
+                try {
+                    Optional<Node> nodeOptional = nodeFuture.get();
+                    if (nodeOptional.isPresent()) {
+                        operationalNodes.put(entry.getKey(), nodeOptional.get());
                     }
+                } catch (InterruptedException | ExecutionException e) {
+                    LOG.warn("Error reading from datastore",e);
                 }
             }
         }
index cea65595dd48d6f32fb599f4b5d8282a9910b77b..104ef77b42a769c98f64a1d4bfaa2001b01da6a2 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
 import java.util.Collection;
@@ -115,8 +116,8 @@ public class QosUpdateCommand implements TransactCommand {
             Uuid operQosUuid = getQosEntryUuid(operNode.getQosEntries(), qosEntry.getQosId());
             if (operQosUuid == null) {
                 UUID namedUuid = new UUID(SouthboundConstants.QOS_NAMED_UUID_PREFIX
-                        + TransactUtils.bytesToHexString(qosEntry.getQosId().getValue().getBytes()));
-                transaction.add(op.insert(qos).withId(namedUuid.toString())).build();
+                        + TransactUtils.bytesToHexString(qosEntry.getQosId().getValue().getBytes(UTF_8)));
+                transaction.add(op.insert(qos).withId(namedUuid.toString()));
                 LOG.info("Added QoS Uuid: {} for node : {} ", namedUuid, operNode.getConnectionInfo());
             } else {
                 UUID uuid = new UUID(operQosUuid.getValue());
@@ -127,7 +128,6 @@ public class QosUpdateCommand implements TransactCommand {
                         .where(extraQos.getUuidColumn().getSchema().opEqual(uuid)).build());
                 LOG.info("Updated  QoS Uuid : {} for node : {} ", operQosUuid, operNode.getConnectionInfo());
             }
-            transaction.build();
         }
     }
 
@@ -141,7 +141,7 @@ public class QosUpdateCommand implements TransactCommand {
             }
         }
         return SouthboundConstants.QUEUE_NAMED_UUID_PREFIX
-                + TransactUtils.bytesToHexString(queueKey.getQueueId().getValue().getBytes());
+                + TransactUtils.bytesToHexString(queueKey.getQueueId().getValue().getBytes(UTF_8));
     }
 
     private Uuid getQosEntryUuid(List<QosEntries> operQosEntries, Uri qosId) {
index 1d66bb1f81cef672060c1bd15bb5179a9dbb6d92..5c4cae37014ba4319ddeadb57b7f8de63fe20055 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
 import java.util.Collection;
@@ -16,7 +17,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.ovsdb.lib.notation.UUID;
@@ -73,7 +73,7 @@ public class QueueUpdateCommand implements TransactCommand {
             if (queueEntry.getDscp() != null) {
                 try {
                     Set<Long> dscpSet = new HashSet<>();
-                    if (dscpSet.add(new Long(queueEntry.getDscp().toString()))) {
+                    if (dscpSet.add(Long.valueOf(queueEntry.getDscp().toString()))) {
                         queue.setDscp(dscpSet);
                     }
                 } catch (NumberFormatException e) {
@@ -107,8 +107,8 @@ public class QueueUpdateCommand implements TransactCommand {
             Uuid operQueueUuid = getQueueEntryUuid(operNode.getQueues(), queueEntry.getQueueId());
             if (operQueueUuid == null) {
                 UUID namedUuid = new UUID(SouthboundConstants.QUEUE_NAMED_UUID_PREFIX
-                        + TransactUtils.bytesToHexString(queueEntry.getQueueId().getValue().getBytes()));
-                transaction.add(op.insert(queue).withId(namedUuid.toString())).build();
+                        + TransactUtils.bytesToHexString(queueEntry.getQueueId().getValue().getBytes(UTF_8)));
+                transaction.add(op.insert(queue).withId(namedUuid.toString()));
                 LOG.info("Added queue Uuid : {} for Ovsdb Node : {}",
                         namedUuid, operNode);
             } else {
@@ -121,7 +121,6 @@ public class QueueUpdateCommand implements TransactCommand {
                 LOG.info("Updated queue entries: {} for Ovsdb Node : {}",
                         queue, operNode);
             }
-            transaction.build();
         }
     }
 
index b027cb1ab7482f175310cb16857658f7908e86f5..c1e252569263a7b20b9c11ef483a9438bf4b8db3 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 import static org.opendaylight.ovsdb.southbound.SouthboundUtil.schemaMismatchLog;
 
@@ -184,7 +185,7 @@ public class TerminationPointUpdateCommand implements TransactCommand {
             }
             if (uuidSet.size() == 0) {
                 uuidSet.add(new UUID(SouthboundConstants.QOS_NAMED_UUID_PREFIX
-                        + TransactUtils.bytesToHexString(qosId.getValue().getBytes())));
+                        + TransactUtils.bytesToHexString(qosId.getValue().getBytes(UTF_8))));
             }
         }
         port.setQos(uuidSet);
index 7b42925555770afeaf1617e1fa18b0f269b038ce..95afbd6ca8df0e2929080e2bffc23a466e0f6175 100644 (file)
@@ -13,7 +13,6 @@ import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import com.google.common.util.concurrent.UncheckedExecutionException;
-
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -24,9 +23,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
-
 import javax.annotation.Nonnull;
-
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
@@ -263,11 +260,11 @@ public class ReconciliationManager implements AutoCloseable {
         }
     }
 
-    private class NodeConnectionMetadata {
-        Node node;
-        InstanceIdentifier<?> nodeIid;
-        OvsdbConnectionManager connectionManager;
-        OvsdbConnectionInstance connectionInstance;
+    private static class NodeConnectionMetadata {
+        private final Node node;
+        private InstanceIdentifier<?> nodeIid;
+        private final OvsdbConnectionManager connectionManager;
+        private final OvsdbConnectionInstance connectionInstance;
 
         NodeConnectionMetadata(Node node,
                                OvsdbConnectionManager connectionManager,
index 942e2e0cbefbdd9d81c631d51c114b65c4d458a2..3d8f98447d1aa4ace4b84a002bc34fef8ee33889 100644 (file)
@@ -25,10 +25,10 @@ public class ConnectionReconciliationTask extends ReconciliationTask {
 
     private static final Logger LOG = LoggerFactory.getLogger(ConnectionReconciliationTask.class);
 
-    private static final int RETRY_INTERVAL_FACTOR = 10000;
+    private static final long RETRY_INTERVAL_FACTOR = 10000;
     private static final int MAX_ATTEMPT = 10;
 
-    private AtomicInteger connectionAttempt = new AtomicInteger(0);
+    private final AtomicInteger connectionAttempt = new AtomicInteger(0);
 
     public ConnectionReconciliationTask(ReconciliationManager reconciliationManager, OvsdbConnectionManager
             connectionManager, InstanceIdentifier<?> nodeIid, DataObject configData) {
index 5905a061a33a8f0d4308a3e961531a6fbd191645..accb591c1c4a3f6a4f17e939da979f600d75b0c8 100644 (file)
@@ -109,10 +109,10 @@ public class OpenVSwitchUpdateCommand extends AbstractTransactionCommand {
             oldOtherConfigs = oldEntry.getOtherConfigColumn().getData();
         }
 
-        if ((oldOtherConfigs != null) && (!oldOtherConfigs.isEmpty())) {
+        if (oldOtherConfigs != null && !oldOtherConfigs.isEmpty()) {
             removeOldConfigs(transaction, oldOtherConfigs, openVSwitch);
         }
-        if ((otherConfigs != null) && (!otherConfigs.isEmpty())) {
+        if (otherConfigs != null && !otherConfigs.isEmpty()) {
             setNewOtherConfigs(ovsdbNodeBuilder, otherConfigs);
         }
     }
@@ -135,11 +135,10 @@ public class OpenVSwitchUpdateCommand extends AbstractTransactionCommand {
 
     private void setNewOtherConfigs(OvsdbNodeAugmentationBuilder ovsdbNodeBuilder,
             Map<String, String> otherConfigs) {
-        Set<String> otherConfigKeys = otherConfigs.keySet();
         List<OpenvswitchOtherConfigs> otherConfigsList = new ArrayList<>();
-        String otherConfigValue;
-        for (String otherConfigKey : otherConfigKeys) {
-            otherConfigValue = otherConfigs.get(otherConfigKey);
+        for (Entry<String, String> entry : otherConfigs.entrySet()) {
+            String otherConfigKey = entry.getKey();
+            String otherConfigValue = entry.getValue();
             if (otherConfigKey != null && otherConfigValue != null) {
                 otherConfigsList.add(new OpenvswitchOtherConfigsBuilder().setOtherConfigKey(otherConfigKey)
                         .setOtherConfigValue(otherConfigValue).build());
@@ -159,7 +158,7 @@ public class OpenVSwitchUpdateCommand extends AbstractTransactionCommand {
         if (oldEntry != null && oldEntry.getExternalIdsColumn() != null) {
             oldExternalIds = oldEntry.getExternalIdsColumn().getData();
         }
-        if ((oldExternalIds == null) || oldExternalIds.isEmpty()) {
+        if (oldExternalIds == null || oldExternalIds.isEmpty()) {
             setNewExternalIds(ovsdbNodeBuilder, externalIds);
         } else if (externalIds != null && !externalIds.isEmpty()) {
             removeExternalIds(transaction, oldExternalIds, openVSwitch);
@@ -185,11 +184,10 @@ public class OpenVSwitchUpdateCommand extends AbstractTransactionCommand {
 
     private void setNewExternalIds(OvsdbNodeAugmentationBuilder ovsdbNodeBuilder,
             Map<String, String> externalIds) {
-        Set<String> externalIdKeys = externalIds.keySet();
         List<OpenvswitchExternalIds> externalIdsList = new ArrayList<>();
-        String externalIdValue;
-        for (String externalIdKey : externalIdKeys) {
-            externalIdValue = externalIds.get(externalIdKey);
+        for (Entry<String, String> entry : externalIds.entrySet()) {
+            String externalIdKey = entry.getKey();
+            String externalIdValue = entry.getValue();
             if (externalIdKey != null && externalIdValue != null) {
                 externalIdsList.add(new OpenvswitchExternalIdsBuilder().setExternalIdKey(externalIdKey)
                         .setExternalIdValue(externalIdValue).build());
index 57bb97001004a5e65181b83302adc20744f4eaf3..5ab23ff8af89a03f6b67192e5509b9636a93d097 100644 (file)
@@ -13,7 +13,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
@@ -42,8 +41,8 @@ import org.slf4j.LoggerFactory;
 public class OvsdbAutoAttachUpdateCommand extends AbstractTransactionCommand {
     private static final Logger LOG = LoggerFactory.getLogger(OvsdbAutoAttachUpdateCommand.class);
 
-    private Map<UUID, AutoAttach> updatedAutoAttachRows;
-    private Map<UUID, AutoAttach> oldAutoAttachRows;
+    private final Map<UUID, AutoAttach> updatedAutoAttachRows;
+    private final Map<UUID, AutoAttach> oldAutoAttachRows;
 
     public OvsdbAutoAttachUpdateCommand(OvsdbConnectionInstance key,
             TableUpdates updates, DatabaseSchema dbSchema) {
@@ -99,7 +98,7 @@ public class OvsdbAutoAttachUpdateCommand extends AbstractTransactionCommand {
                 }
 
                 final AutoattachBuilder autoAttachBuilder =
-                        (currentAutoattach != null) ? new AutoattachBuilder(currentAutoattach)
+                        currentAutoattach != null ? new AutoattachBuilder(currentAutoattach)
                                 : new AutoattachBuilder()
                                 .setAutoattachUuid(new Uuid(entry.getKey().toString()))
                                 .setAutoattachId(uri)
@@ -138,10 +137,10 @@ public class OvsdbAutoAttachUpdateCommand extends AbstractTransactionCommand {
     private void setMappings(AutoattachBuilder autoAttachBuilder,
             AutoAttach autoAttach) {
         final Map<Long, Long> mappings = autoAttach.getMappingsColumn().getData();
-        final Set<Long> mappingsKeys = mappings.keySet();
         final List<Mappings> mappingsList = new ArrayList<>();
-        for (final Long mappingsKey : mappingsKeys) {
-            final Integer mappingsValue = new Integer(mappings.get(mappingsKey).toString());
+        for (final Entry<Long, Long> entry : mappings.entrySet()) {
+            final Long mappingsKey = entry.getKey();
+            final Integer mappingsValue = Integer.valueOf(entry.getValue().intValue());
             if (mappingsKey != null) {
                 mappingsList.add(new MappingsBuilder()
                         .setKey(new MappingsKey(mappingsKey))
index 1017f8cd6e9737d05b68e9aee56a2138d12a7526..a7ef18e2eaffae434c108884b0276dc01abfbb96 100644 (file)
@@ -38,7 +38,6 @@ import org.opendaylight.ovsdb.southbound.SouthboundConstants;
 import org.opendaylight.ovsdb.southbound.SouthboundMapper;
 import org.opendaylight.ovsdb.southbound.SouthboundUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
@@ -72,8 +71,8 @@ import org.slf4j.LoggerFactory;
 public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand {
     private static final Logger LOG = LoggerFactory.getLogger(OvsdbBridgeUpdateCommand.class);
     private final InstanceIdentifierCodec instanceIdentifierCodec;
-    private Map<UUID,Bridge> updatedBridgeRows;
-    private Map<UUID, Bridge> oldBridgeRows;
+    private final Map<UUID,Bridge> updatedBridgeRows;
+    private final Map<UUID, Bridge> oldBridgeRows;
 
     public OvsdbBridgeUpdateCommand(InstanceIdentifierCodec instanceIdentifierCodec, OvsdbConnectionInstance key,
             TableUpdates updates, DatabaseSchema dbSchema) {
@@ -289,11 +288,10 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand {
         Map<String, String> otherConfigs = bridge
                 .getOtherConfigColumn().getData();
         if (otherConfigs != null && !otherConfigs.isEmpty()) {
-            Set<String> otherConfigKeys = otherConfigs.keySet();
             List<BridgeOtherConfigs> otherConfigList = new ArrayList<>();
-            String otherConfigValue;
-            for (String otherConfigKey : otherConfigKeys) {
-                otherConfigValue = otherConfigs.get(otherConfigKey);
+            for (Entry<String, String> entry : otherConfigs.entrySet()) {
+                String otherConfigKey = entry.getKey();
+                String otherConfigValue = entry.getValue();
                 if (otherConfigKey != null && otherConfigValue != null) {
                     otherConfigList.add(new BridgeOtherConfigsBuilder()
                             .setBridgeOtherConfigKey(otherConfigKey)
@@ -310,11 +308,10 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand {
         Map<String, String> externalIds = bridge.getExternalIdsColumn()
                 .getData();
         if (externalIds != null && !externalIds.isEmpty()) {
-            Set<String> externalIdKeys = externalIds.keySet();
             List<BridgeExternalIds> externalIdsList = new ArrayList<>();
-            String externalIdValue;
-            for (String externalIdKey : externalIdKeys) {
-                externalIdValue = externalIds.get(externalIdKey);
+            for (Entry<String, String> entry : externalIds.entrySet()) {
+                String externalIdKey = entry.getKey();
+                String externalIdValue = entry.getValue();
                 if (externalIdKey != null && externalIdValue != null) {
                     externalIdsList.add(new BridgeExternalIdsBuilder()
                             .setBridgeExternalIdKey(externalIdKey)
@@ -328,9 +325,9 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand {
 
     private void setProtocol(OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder,
             Bridge bridge) {
-        if (SouthboundMapper.createMdsalProtocols(bridge) != null
-                && SouthboundMapper.createMdsalProtocols(bridge).size() > 0) {
-            ovsdbBridgeAugmentationBuilder.setProtocolEntry(SouthboundMapper.createMdsalProtocols(bridge));
+        final List<ProtocolEntry> protocols = SouthboundMapper.createMdsalProtocols(bridge);
+        if (!protocols.isEmpty()) {
+            ovsdbBridgeAugmentationBuilder.setProtocolEntry(protocols);
         }
     }
 
@@ -362,15 +359,12 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand {
                 && controllerEntry.isIsConnected() != null && controllerEntry.isIsConnected()) {
                 String [] controllerTarget = controllerEntry.getTarget().getValue().split(":");
                 IpAddress bridgeControllerIpAddress = null;
-                PortNumber bridgeControllerPortNumber = null;
                 for (String targetElement : controllerTarget) {
                     if (InetAddresses.isInetAddress(targetElement)) {
                         bridgeControllerIpAddress = new IpAddress(targetElement.toCharArray());
                         continue;
                     }
                     if (NumberUtils.isNumber(targetElement)) {
-                        bridgeControllerPortNumber = new PortNumber(
-                                Integer.valueOf(String.valueOf(targetElement)));
                         continue;
                     }
                 }
index bf26be4132bac740d9292343815442f123b88504..b34b04eb6c50baec754aa13017b55fbdb57119f7 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.ovsdb.southbound.transactions.md;
 
 import java.util.Collection;
 import java.util.Map;
-
+import java.util.Map.Entry;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.ovsdb.lib.message.TableUpdates;
@@ -59,11 +59,12 @@ public class OvsdbPortRemoveCommand extends AbstractTransactionCommand {
                 continue;
             }
             Bridge updatedBridgeData = null;
-            for (UUID bridgeUuid : bridgeUpdatedOldRows.keySet()) {
-                Bridge oldBridgeData = bridgeUpdatedOldRows.get(bridgeUuid);
+            for (Entry<UUID, Bridge> entry : bridgeUpdatedOldRows.entrySet()) {
+                UUID bridgeUuid = entry.getKey();
+                Bridge oldBridgeData = entry.getValue();
                 if (oldBridgeData.getPortsColumn() != null
                         && oldBridgeData.getPortsColumn().getData().contains(port.getUuidColumn().getData())
-                        && (! bridgeUpdatedRows.isEmpty())) {
+                        && ! bridgeUpdatedRows.isEmpty()) {
                     updatedBridgeData = bridgeUpdatedRows.get(bridgeUuid);
                     break;
                 }
index 591921aefda235c7ef0b3e73cbbf006bdd8e65a5..ac9ace2f2da27edd25d0d1171e2272bc787fb212 100644 (file)
@@ -132,7 +132,6 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
                 bridgeIid = getTerminationPointBridge(transaction, node, portName);
             }
             if (bridgeIid.isPresent()) {
-                NodeId bridgeId = SouthboundMapper.createManagedNodeId(bridgeIid.get());
                 TerminationPointKey tpKey = new TerminationPointKey(new TpId(portName));
                 TerminationPointBuilder tpBuilder = new TerminationPointBuilder();
                 tpBuilder.setKey(tpKey);
@@ -220,8 +219,9 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
     }
 
     private Optional<InstanceIdentifier<Node>> getTerminationPointBridge(UUID portUuid) {
-        for (UUID bridgeUuid : this.bridgeUpdatedRows.keySet()) {
-            if (this.bridgeUpdatedRows.get(bridgeUuid).getPortsColumn().getData().contains(portUuid)) {
+        for (Entry<UUID, Bridge> entry : this.bridgeUpdatedRows.entrySet()) {
+            UUID bridgeUuid = entry.getKey();
+            if (entry.getValue().getPortsColumn().getData().contains(portUuid)) {
                 return Optional.of(
                         SouthboundMapper.createInstanceIdentifier(instanceIdentifierCodec, getOvsdbConnectionInstance(),
                                 this.bridgeUpdatedRows.get(bridgeUuid)));
@@ -366,7 +366,7 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
                             InstanceIdentifier<QosEntry> oldPortQosIid = tpPath
                                 .augmentation(OvsdbTerminationPointAugmentation.class)
                                 .child(QosEntry.class,
-                                      new QosEntryKey(new Long(SouthboundConstants.PORT_QOS_LIST_KEY)));
+                                      new QosEntryKey(Long.valueOf(SouthboundConstants.PORT_QOS_LIST_KEY)));
                             transaction.delete(LogicalDatastoreType.OPERATIONAL, oldPortQosIid);
                         }
                     }
@@ -378,7 +378,7 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
                 List<QosEntry> qosList = new ArrayList<>();
                 OvsdbQosRef qosRef = new OvsdbQosRef(qosIid);
                 qosList.add(new QosEntryBuilder()
-                    .setKey(new QosEntryKey(new Long(SouthboundConstants.PORT_QOS_LIST_KEY)))
+                    .setKey(new QosEntryKey(Long.valueOf(SouthboundConstants.PORT_QOS_LIST_KEY)))
                     .setQosRef(qosRef).build());
                 ovsdbTerminationPointBuilder.setQosEntry(qosList);
             }
@@ -480,12 +480,10 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
         Map<String, String> interfaceExternalIds =
                 interf.getExternalIdsColumn().getData();
         if (interfaceExternalIds != null && !interfaceExternalIds.isEmpty()) {
-            Set<String> externalIdKeys = interfaceExternalIds.keySet();
-            List<InterfaceExternalIds> externalIdsList =
-                    new ArrayList<>();
-            String externalIdValue;
-            for (String externalIdKey : externalIdKeys) {
-                externalIdValue = interfaceExternalIds.get(externalIdKey);
+            List<InterfaceExternalIds> externalIdsList = new ArrayList<>();
+            for (Entry<String, String> entry : interfaceExternalIds.entrySet()) {
+                String externalIdKey = entry.getKey();
+                String externalIdValue = entry.getValue();
                 if (externalIdKey != null && externalIdValue != null) {
                     externalIdsList.add(new InterfaceExternalIdsBuilder()
                             .setExternalIdKey(externalIdKey)
@@ -501,11 +499,10 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
 
         Map<String, String> portExternalIds = port.getExternalIdsColumn().getData();
         if (portExternalIds != null && !portExternalIds.isEmpty()) {
-            Set<String> externalIdKeys = portExternalIds.keySet();
             List<PortExternalIds> externalIdsList = new ArrayList<>();
-            String externalIdValue;
-            for (String externalIdKey : externalIdKeys) {
-                externalIdValue = portExternalIds.get(externalIdKey);
+            for (Entry<String, String> entry : portExternalIds.entrySet()) {
+                String externalIdKey = entry.getKey();
+                String externalIdValue = entry.getValue();
                 if (externalIdKey != null && externalIdValue != null) {
                     externalIdsList.add(new PortExternalIdsBuilder()
                             .setExternalIdKey(externalIdKey)
@@ -522,12 +519,11 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
         Map<String, String> optionsMap = interf.getOptionsColumn().getData();
         if (optionsMap != null && !optionsMap.isEmpty()) {
             List<Options> options = new ArrayList<>();
-            String optionsValueString;
-            OptionsKey optionsKey;
-            for (String optionsKeyString : optionsMap.keySet()) {
-                optionsValueString = optionsMap.get(optionsKeyString);
+            for (Entry<String, String> entry : optionsMap.entrySet()) {
+                String optionsKeyString = entry.getKey();
+                String optionsValueString = entry.getValue();
                 if (optionsKeyString != null && optionsValueString != null) {
-                    optionsKey = new OptionsKey(optionsKeyString);
+                    OptionsKey optionsKey = new OptionsKey(optionsKeyString);
                     options.add(new OptionsBuilder()
                         .setKey(optionsKey)
                         .setValue(optionsValueString).build());
@@ -543,9 +539,9 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
         Map<String, String> portOtherConfigMap = port.getOtherConfigColumn().getData();
         if (portOtherConfigMap != null && !portOtherConfigMap.isEmpty()) {
             List<PortOtherConfigs> portOtherConfigs = new ArrayList<>();
-            String portOtherConfigValueString;
-            for (String portOtherConfigKeyString : portOtherConfigMap.keySet()) {
-                portOtherConfigValueString = portOtherConfigMap.get(portOtherConfigKeyString);
+            for (Entry<String, String> entry : portOtherConfigMap.entrySet()) {
+                String portOtherConfigKeyString = entry.getKey();
+                String portOtherConfigValueString = entry.getValue();
                 if (portOtherConfigKeyString != null && portOtherConfigValueString != null) {
                     portOtherConfigs.add(new PortOtherConfigsBuilder()
                         .setOtherConfigKey(portOtherConfigKeyString)
@@ -563,8 +559,9 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
             Map<String, String> interfaceLldpMap = interf.getLldpColumn().getData();
             if (interfaceLldpMap != null && !interfaceLldpMap.isEmpty()) {
                 List<InterfaceLldp> interfaceLldpList = new ArrayList<>();
-                for (String interfaceLldpKeyString : interfaceLldpMap.keySet()) {
-                    String interfaceLldpValueString = interfaceLldpMap.get(interfaceLldpKeyString);
+                for (Entry<String, String> entry : interfaceLldpMap.entrySet()) {
+                    String interfaceLldpKeyString = entry.getKey();
+                    String interfaceLldpValueString = entry.getValue();
                     if (interfaceLldpKeyString != null && interfaceLldpValueString != null) {
                         interfaceLldpList.add(new InterfaceLldpBuilder()
                                 .setKey(new InterfaceLldpKey(interfaceLldpKeyString))
@@ -586,9 +583,9 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
         Map<String, String> interfaceOtherConfigMap = interf.getOtherConfigColumn().getData();
         if (interfaceOtherConfigMap != null && !interfaceOtherConfigMap.isEmpty()) {
             List<InterfaceOtherConfigs> interfaceOtherConfigs = new ArrayList<>();
-            String interfaceOtherConfigValueString;
-            for (String interfaceOtherConfigKeyString : interfaceOtherConfigMap.keySet()) {
-                interfaceOtherConfigValueString = interfaceOtherConfigMap.get(interfaceOtherConfigKeyString);
+            for (Entry<String, String> entry : interfaceOtherConfigMap.entrySet()) {
+                String interfaceOtherConfigKeyString = entry.getKey();
+                String interfaceOtherConfigValueString = entry.getValue();
                 if (interfaceOtherConfigKeyString != null && interfaceOtherConfigValueString != null) {
                     interfaceOtherConfigs.add(new InterfaceOtherConfigsBuilder()
                         .setOtherConfigKey(interfaceOtherConfigKeyString)
@@ -606,8 +603,9 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
             Map<String, String> interfaceBfdStatusMap = interf.getBfdStatusColumn().getData();
             if (interfaceBfdStatusMap != null && !interfaceBfdStatusMap.isEmpty()) {
                 List<InterfaceBfdStatus> interfaceBfdStatusList = new ArrayList<>();
-                for (String interfaceBfdStatusKeyString : interfaceBfdStatusMap.keySet()) {
-                    String interfaceBfdStatusValueString = interfaceBfdStatusMap.get(interfaceBfdStatusKeyString);
+                for (Entry<String, String> entry : interfaceBfdStatusMap.entrySet()) {
+                    String interfaceBfdStatusKeyString = entry.getKey();
+                    String interfaceBfdStatusValueString = entry.getValue();
                     if (interfaceBfdStatusKeyString != null && interfaceBfdStatusValueString != null) {
                         interfaceBfdStatusList.add(new InterfaceBfdStatusBuilder()
                                 .setKey(new InterfaceBfdStatusKey(interfaceBfdStatusKeyString))
@@ -630,8 +628,9 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
             Map<String, String> interfaceBfdMap = interf.getBfdColumn().getData();
             if (interfaceBfdMap != null && !interfaceBfdMap.isEmpty()) {
                 List<InterfaceBfd> interfaceBfdList = new ArrayList<>();
-                for (String interfaceBfdKeyString : interfaceBfdMap.keySet()) {
-                    String interfaceBfdValueString = interfaceBfdMap.get(interfaceBfdKeyString);
+                for (Entry<String, String> entry : interfaceBfdMap.entrySet()) {
+                    String interfaceBfdKeyString = entry.getKey();
+                    String interfaceBfdValueString = entry.getValue();
                     if (interfaceBfdKeyString != null && interfaceBfdValueString != null) {
                         interfaceBfdList.add(new InterfaceBfdBuilder()
                                 .setKey(new InterfaceBfdKey(interfaceBfdKeyString))
index f14c11e9085bcb2c4d2a22c687b7e9f94b231986..ed9857c219d0a7422d84b6bbe7c269a2fb5a64cd 100644 (file)
@@ -57,9 +57,9 @@ public class OvsdbQosUpdateCommand extends AbstractTransactionCommand {
 
     private final InstanceIdentifierCodec instanceIdentifierCodec;
 
-    private Map<UUID, Qos> updatedQosRows;
-    private Map<UUID, Qos> oldQosRows;
-    private Map<UUID, Queue> updatedQueueRows;
+    private final Map<UUID, Qos> updatedQosRows;
+    private final Map<UUID, Qos> oldQosRows;
+    private final Map<UUID, Queue> updatedQueueRows;
 
     public OvsdbQosUpdateCommand(InstanceIdentifierCodec instanceIdentifierCodec, OvsdbConnectionInstance key,
             TableUpdates updates, DatabaseSchema dbSchema) {
@@ -190,7 +190,7 @@ public class OvsdbQosUpdateCommand extends AbstractTransactionCommand {
         if (oldQos != null && oldQos.getOtherConfigColumn() != null) {
             oldOtherConfigs = oldQos.getOtherConfigColumn().getData();
         }
-        if ((oldOtherConfigs != null) && !oldOtherConfigs.isEmpty()) {
+        if (oldOtherConfigs != null && !oldOtherConfigs.isEmpty()) {
             removeOldConfigs(transaction, qosEntryBuilder, oldOtherConfigs, qos, nodeIId);
         }
         if (otherConfigs != null && !otherConfigs.isEmpty()) {
@@ -215,11 +215,10 @@ public class OvsdbQosUpdateCommand extends AbstractTransactionCommand {
 
     private void setNewOtherConfigs(QosEntriesBuilder qosEntryBuilder,
             Map<String, String> otherConfig) {
-        Set<String> otherConfigKeys = otherConfig.keySet();
         List<QosOtherConfig> otherConfigList = new ArrayList<>();
-        String otherConfigValue;
-        for (String otherConfigKey : otherConfigKeys) {
-            otherConfigValue = otherConfig.get(otherConfigKey);
+        for (Entry<String, String> entry : otherConfig.entrySet()) {
+            String otherConfigKey = entry.getKey();
+            String otherConfigValue = entry.getValue();
             if (otherConfigKey != null && otherConfigValue != null) {
                 otherConfigList.add(new QosOtherConfigBuilder().setOtherConfigKey(otherConfigKey)
                         .setOtherConfigValue(otherConfigValue).build());
@@ -240,7 +239,7 @@ public class OvsdbQosUpdateCommand extends AbstractTransactionCommand {
         if (oldQos != null && oldQos.getExternalIdsColumn() != null) {
             oldExternalIds = oldQos.getExternalIdsColumn().getData();
         }
-        if ((oldExternalIds != null) && !oldExternalIds.isEmpty()) {
+        if (oldExternalIds != null && !oldExternalIds.isEmpty()) {
             removeOldExternalIds(transaction, qosEntryBuilder, oldExternalIds, qos, nodeIId);
         }
         if (externalIds != null && !externalIds.isEmpty()) {
@@ -265,11 +264,10 @@ public class OvsdbQosUpdateCommand extends AbstractTransactionCommand {
 
     private void setNewExternalIds(QosEntriesBuilder qosEntryBuilder,
             Map<String, String> externalIds) {
-        Set<String> externalIdsKeys = externalIds.keySet();
         List<QosExternalIds> externalIdsList = new ArrayList<>();
-        String extIdValue;
-        for (String extIdKey : externalIdsKeys) {
-            extIdValue = externalIds.get(extIdKey);
+        for (Entry<String, String> entry : externalIds.entrySet()) {
+            String extIdKey = entry.getKey();
+            String extIdValue = entry.getValue();
             if (extIdKey != null && extIdValue != null) {
                 externalIdsList.add(new QosExternalIdsBuilder().setQosExternalIdKey(extIdKey)
                         .setQosExternalIdValue(extIdValue).build());
@@ -290,7 +288,7 @@ public class OvsdbQosUpdateCommand extends AbstractTransactionCommand {
         if (oldQos != null && oldQos.getQueuesColumn() != null) {
             oldQueueList = oldQos.getQueuesColumn().getData();
         }
-        if ((oldQueueList != null) && !oldQueueList.isEmpty()) {
+        if (oldQueueList != null && !oldQueueList.isEmpty()) {
             removeOldQueues(transaction, qosEntryBuilder, oldQueueList, qos, nodeIId);
         }
         if (queueList != null && !queueList.isEmpty()) {
@@ -307,8 +305,7 @@ public class OvsdbQosUpdateCommand extends AbstractTransactionCommand {
         Collection<Long> queueListKeys = oldQueueList.keySet();
         for (Long queueListKey : queueListKeys) {
             KeyedInstanceIdentifier<QueueList, QueueListKey> otherIId =
-                    qosIId
-                    .child(QueueList.class, new QueueListKey(new Long(queueListKey.toString())));
+                    qosIId.child(QueueList.class, new QueueListKey(Long.valueOf(queueListKey.toString())));
             transaction.delete(LogicalDatastoreType.OPERATIONAL, otherIId);
         }
     }
index cb33cf69c47733e5eb6463e0cb0c394fc55e843a..0ba2bff27130d8b37621af7dce1f078ba9e5bd89 100644 (file)
@@ -49,8 +49,8 @@ public class OvsdbQueueUpdateCommand extends AbstractTransactionCommand {
 
     private final InstanceIdentifierCodec instanceIdentifierCodec;
 
-    private Map<UUID, Queue> updatedQueueRows;
-    private Map<UUID, Queue> oldQueueRows;
+    private final Map<UUID, Queue> updatedQueueRows;
+    private final Map<UUID, Queue> oldQueueRows;
 
     public OvsdbQueueUpdateCommand(InstanceIdentifierCodec instanceIdentifierCodec, OvsdbConnectionInstance key,
             TableUpdates updates, DatabaseSchema dbSchema) {
@@ -142,7 +142,7 @@ public class OvsdbQueueUpdateCommand extends AbstractTransactionCommand {
         if (oldQueue != null && oldQueue.getOtherConfigColumn() != null) {
             oldOtherConfigs = oldQueue.getOtherConfigColumn().getData();
         }
-        if ((oldOtherConfigs != null) && !oldOtherConfigs.isEmpty()) {
+        if (oldOtherConfigs != null && !oldOtherConfigs.isEmpty()) {
             removeOldConfigs(transaction, queuesBuilder, oldOtherConfigs, queue, nodeIId);
         }
         if (otherConfigs != null && !otherConfigs.isEmpty()) {
@@ -167,11 +167,10 @@ public class OvsdbQueueUpdateCommand extends AbstractTransactionCommand {
 
     private void setNewOtherConfigs(QueuesBuilder queuesBuilder,
             Map<String, String> otherConfig) {
-        Set<String> otherConfigKeys = otherConfig.keySet();
         List<QueuesOtherConfig> otherConfigList = new ArrayList<>();
-        String otherConfigValue;
-        for (String otherConfigKey : otherConfigKeys) {
-            otherConfigValue = otherConfig.get(otherConfigKey);
+        for (Entry<String, String> entry : otherConfig.entrySet()) {
+            String otherConfigKey = entry.getKey();
+            String otherConfigValue = entry.getValue();
             if (otherConfigKey != null && otherConfigValue != null) {
                 otherConfigList.add(new QueuesOtherConfigBuilder().setQueueOtherConfigKey(otherConfigKey)
                         .setQueueOtherConfigValue(otherConfigValue).build());
@@ -192,7 +191,7 @@ public class OvsdbQueueUpdateCommand extends AbstractTransactionCommand {
         if (oldQueue != null && oldQueue.getExternalIdsColumn() != null) {
             oldExternalIds = oldQueue.getExternalIdsColumn().getData();
         }
-        if ((oldExternalIds != null) && !oldExternalIds.isEmpty()) {
+        if (oldExternalIds != null && !oldExternalIds.isEmpty()) {
             removeOldExternalIds(transaction, queuesBuilder, oldExternalIds, queue, nodeIId);
         }
         if (externalIds != null && !externalIds.isEmpty()) {
@@ -217,11 +216,10 @@ public class OvsdbQueueUpdateCommand extends AbstractTransactionCommand {
 
     private void setNewExternalIds(QueuesBuilder queuesBuilder,
             Map<String, String> externalIds) {
-        Set<String> externalIdsKeys = externalIds.keySet();
         List<QueuesExternalIds> externalIdsList = new ArrayList<>();
-        String externalIdValue;
-        for (String extIdKey : externalIdsKeys) {
-            externalIdValue = externalIds.get(extIdKey);
+        for (Entry<String, String> entry : externalIds.entrySet()) {
+            String extIdKey = entry.getKey();
+            String externalIdValue = entry.getValue();
             if (extIdKey != null && externalIdValue != null) {
                 externalIdsList.add(new QueuesExternalIdsBuilder().setQueuesExternalIdKey(extIdKey)
                         .setQueuesExternalIdValue(externalIdValue).build());
index bb815356d0316ccb73be8912950d8aed98f056eb..8a547110fe7372c5c1fbb8a2b648ab1ccf1fe2f2 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.ovsdb.southbound.transactions.md;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -36,13 +37,13 @@ public class TransactionInvokerImpl implements TransactionInvoker,TransactionCha
     private static final Logger LOG = LoggerFactory.getLogger(TransactionInvokerImpl.class);
     private static final int QUEUE_SIZE = 10000;
     private BindingTransactionChain chain;
-    private DataBroker db;
-    private BlockingQueue<TransactionCommand> inputQueue = new LinkedBlockingQueue<>(QUEUE_SIZE);
-    private BlockingQueue<ReadWriteTransaction> successfulTransactionQueue
+    private final DataBroker db;
+    private final BlockingQueue<TransactionCommand> inputQueue = new LinkedBlockingQueue<>(QUEUE_SIZE);
+    private final BlockingQueue<ReadWriteTransaction> successfulTransactionQueue
         = new LinkedBlockingQueue<>(QUEUE_SIZE);
-    private BlockingQueue<AsyncTransaction<?, ?>> failedTransactionQueue
+    private final BlockingQueue<AsyncTransaction<?, ?>> failedTransactionQueue
         = new LinkedBlockingQueue<>(QUEUE_SIZE);
-    private ExecutorService executor;
+    private final ExecutorService executor;
     private Map<ReadWriteTransaction,TransactionCommand> transactionToCommand
         = new HashMap<>();
     private List<ReadWriteTransaction> pendingTransactions = new ArrayList<>();
@@ -53,19 +54,21 @@ public class TransactionInvokerImpl implements TransactionInvoker,TransactionCha
         this.chain = db.createTransactionChain(this);
         ThreadFactory threadFact = new ThreadFactoryBuilder().setNameFormat("transaction-invoker-impl-%d").build();
         executor = Executors.newSingleThreadExecutor(threadFact);
-        executor.submit(this);
+        executor.execute(this);
     }
 
     @Override
     public void invoke(final TransactionCommand command) {
         // TODO what do we do if queue is full?
-        inputQueue.offer(command);
+        if (!inputQueue.offer(command)) {
+            LOG.error("inputQueue is full (size: {}) - could not offer {}", inputQueue.size(), command);
+        }
     }
 
     @Override
     public void onTransactionChainFailed(TransactionChain<?, ?> chainArg,
             AsyncTransaction<?, ?> transaction, Throwable cause) {
-        failedTransactionQueue.offer(transaction);
+        offerFailedTransaction(transaction);
     }
 
     @Override
@@ -96,14 +99,17 @@ public class TransactionInvokerImpl implements TransactionInvoker,TransactionCha
                     Futures.addCallback(transaction.submit(), new FutureCallback<Void>() {
                         @Override
                         public void onSuccess(final Void result) {
-                            successfulTransactionQueue.offer(transaction);
+                            if (!successfulTransactionQueue.offer(transaction)) {
+                                LOG.error("successfulTransactionQueue is full (size: {}) - could not offer {}",
+                                        successfulTransactionQueue.size(), transaction);
+                            }
                         }
 
                         @Override
                         public void onFailure(final Throwable throwable) {
                             // NOOP - handled by failure of transaction chain
                         }
-                    });
+                    }, MoreExecutors.directExecutor());
                 }
             } catch (IllegalStateException e) {
                 if (transactionInFlight != null) {
@@ -111,13 +117,19 @@ public class TransactionInvokerImpl implements TransactionInvoker,TransactionCha
                     // retried from exceptions on which the command should NOT be retried.
                     // Then it should retry only the commands which should be retried, otherwise
                     // this method will retry commands which will never be successful forever.
-                    failedTransactionQueue.offer(transactionInFlight);
+                    offerFailedTransaction(transactionInFlight);
                 }
                 LOG.warn("Failed to process an update notification from OVS.", e);
             }
         }
     }
 
+    private void offerFailedTransaction(AsyncTransaction<?, ?> transaction) {
+        if (!failedTransactionQueue.offer(transaction)) {
+            LOG.warn("failedTransactionQueue is full (size: {})", failedTransactionQueue.size());
+        }
+    }
+
     private List<TransactionCommand> extractResubmitCommands() {
         AsyncTransaction<?, ?> transaction = failedTransactionQueue.poll();
         List<TransactionCommand> commands = new ArrayList<>();