ovsdb enable checkstyle on error
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / BridgeOperationalState.java
index f1fa291f64b57409ecd579fa60d7602cd63d1a5a..0fb4ab85b269e5b72b83f321e5060fbab40a6def 100644 (file)
@@ -1,11 +1,22 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.ovsdb.southbound.ovsdb.transact;
 
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.CheckedFuture;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ExecutionException;
-
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -24,19 +35,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-
 public class BridgeOperationalState {
     private static final Logger LOG = LoggerFactory.getLogger(BridgeOperationalState.class);
-    private DataBroker db;
-    private AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes;
-    private Map<InstanceIdentifier<Node>, Node> operationalNodes = new HashMap<InstanceIdentifier<Node>, Node>();
+    private Map<InstanceIdentifier<Node>, Node> operationalNodes = new HashMap<>();
 
     public BridgeOperationalState(DataBroker db, AsyncDataChangeEvent<InstanceIdentifier<?>,
             DataObject> changes) {
-        this.db = db;
-        this.changes = changes;
         ReadOnlyTransaction transaction = db.newReadOnlyTransaction();
         Map<InstanceIdentifier<Node>, Node> nodeCreateOrUpdate =
                 TransactUtils.extractCreatedOrUpdatedOrRemoved(changes, Node.class);
@@ -49,9 +53,7 @@ public class BridgeOperationalState {
                     if (nodeOptional.isPresent()) {
                         operationalNodes.put(entry.getKey(), nodeOptional.get());
                     }
-                } catch (InterruptedException e) {
-                    LOG.warn("Error reading from datastore",e);
-                } catch (ExecutionException e) {
+                } catch (InterruptedException | ExecutionException e) {
                     LOG.warn("Error reading from datastore",e);
                 }
             }
@@ -59,32 +61,46 @@ public class BridgeOperationalState {
         transaction.close();
     }
 
+    public BridgeOperationalState(DataBroker db, Collection<DataTreeModification<Node>> changes) {
+        ReadOnlyTransaction transaction = db.newReadOnlyTransaction();
+        Map<InstanceIdentifier<Node>, Node> nodeCreateOrUpdateOrRemove =
+                TransactUtils.extractCreatedOrUpdatedOrRemoved(changes, Node.class);
+        for (Entry<InstanceIdentifier<Node>, Node> entry : nodeCreateOrUpdateOrRemove.entrySet()) {
+            try {
+                Optional<Node> nodeOptional = transaction.read(LogicalDatastoreType.OPERATIONAL, entry.getKey())
+                            .checkedGet();
+                if (nodeOptional.isPresent()) {
+                    operationalNodes.put(entry.getKey(), nodeOptional.get());
+                }
+            } catch (ReadFailedException e) {
+                LOG.warn("Error reading from datastore", e);
+            }
+        }
+    }
+
     public Optional<Node> getBridgeNode(InstanceIdentifier<?> iid) {
         InstanceIdentifier<Node> nodeIid = iid.firstIdentifierOf(Node.class);
-        if (operationalNodes.containsKey(nodeIid)) {
-            return Optional.of(operationalNodes.get(nodeIid));
-        }
-        return Optional.absent();
+        return Optional.fromNullable(operationalNodes.get(nodeIid));
     }
 
     public Optional<OvsdbBridgeAugmentation> getOvsdbBridgeAugmentation(InstanceIdentifier<?> iid) {
         Optional<Node> nodeOptional = getBridgeNode(iid);
-        if (nodeOptional.isPresent() && nodeOptional.get().getAugmentation(OvsdbBridgeAugmentation.class) != null) {
-            return Optional.of(nodeOptional.get().getAugmentation(OvsdbBridgeAugmentation.class));
+        if (nodeOptional.isPresent()) {
+            return Optional.fromNullable(nodeOptional.get().getAugmentation(OvsdbBridgeAugmentation.class));
         }
         return Optional.absent();
     }
 
-    public Optional<TerminationPoint> getBrideTermiationPoint(InstanceIdentifier<?> iid) {
-        Optional<Node> nodeOptional = getBridgeNode(iid);
-        if (nodeOptional.isPresent()
-                && nodeOptional.get().getTerminationPoint() != null
-                && iid != null) {
-            TerminationPointKey key = iid.firstKeyOf(TerminationPoint.class, TerminationPointKey.class);
-            if (key != null) {
-                for (TerminationPoint tp:nodeOptional.get().getTerminationPoint()) {
-                    if (tp.getKey().equals(key)) {
-                        return Optional.of(tp);
+    public Optional<TerminationPoint> getBridgeTerminationPoint(InstanceIdentifier<?> iid) {
+        if (iid != null) {
+            Optional<Node> nodeOptional = getBridgeNode(iid);
+            if (nodeOptional.isPresent() && nodeOptional.get().getTerminationPoint() != null) {
+                TerminationPointKey key = iid.firstKeyOf(TerminationPoint.class, TerminationPointKey.class);
+                if (key != null) {
+                    for (TerminationPoint tp:nodeOptional.get().getTerminationPoint()) {
+                        if (tp.getKey().equals(key)) {
+                            return Optional.of(tp);
+                        }
                     }
                 }
             }
@@ -93,24 +109,23 @@ public class BridgeOperationalState {
     }
 
     public Optional<OvsdbTerminationPointAugmentation> getOvsdbTerminationPointAugmentation(InstanceIdentifier<?> iid) {
-        Optional<TerminationPoint> tpOptional = getBrideTermiationPoint(iid);
-        if (tpOptional.isPresent()
-                && tpOptional.get().getAugmentation(OvsdbTerminationPointAugmentation.class) != null) {
-            return Optional.of(tpOptional.get().getAugmentation(OvsdbTerminationPointAugmentation.class));
+        Optional<TerminationPoint> tpOptional = getBridgeTerminationPoint(iid);
+        if (tpOptional.isPresent()) {
+            return Optional.fromNullable(tpOptional.get().getAugmentation(OvsdbTerminationPointAugmentation.class));
         }
         return Optional.absent();
     }
 
     public Optional<ControllerEntry> getControllerEntry(InstanceIdentifier<?> iid) {
-        Optional<OvsdbBridgeAugmentation> ovsdbBridgeOptional = getOvsdbBridgeAugmentation(iid);
-        if (ovsdbBridgeOptional.isPresent()
-                && ovsdbBridgeOptional.get().getControllerEntry() != null
-                && iid != null) {
-            ControllerEntryKey key = iid.firstKeyOf(ControllerEntry.class, ControllerEntryKey.class);
-            if (key != null) {
-                for (ControllerEntry entry: ovsdbBridgeOptional.get().getControllerEntry()) {
-                    if (entry.getKey().equals(key)) {
-                        return Optional.of(entry);
+        if (iid != null) {
+            Optional<OvsdbBridgeAugmentation> ovsdbBridgeOptional = getOvsdbBridgeAugmentation(iid);
+            if (ovsdbBridgeOptional.isPresent() && ovsdbBridgeOptional.get().getControllerEntry() != null) {
+                ControllerEntryKey key = iid.firstKeyOf(ControllerEntry.class, ControllerEntryKey.class);
+                if (key != null) {
+                    for (ControllerEntry entry: ovsdbBridgeOptional.get().getControllerEntry()) {
+                        if (entry.getKey().equals(key)) {
+                            return Optional.of(entry);
+                        }
                     }
                 }
             }
@@ -119,15 +134,15 @@ public class BridgeOperationalState {
     }
 
     public Optional<ProtocolEntry> getProtocolEntry(InstanceIdentifier<ProtocolEntry> iid) {
-        Optional<OvsdbBridgeAugmentation> ovsdbBridgeOptional = getOvsdbBridgeAugmentation(iid);
-        if (ovsdbBridgeOptional.isPresent()
-                && ovsdbBridgeOptional.get().getProtocolEntry() != null
-                && iid != null) {
-            ProtocolEntryKey key = iid.firstKeyOf(ProtocolEntry.class, ProtocolEntryKey.class);
-            if (key != null) {
-                for (ProtocolEntry entry: ovsdbBridgeOptional.get().getProtocolEntry()) {
-                    if (entry.getKey().equals(key)) {
-                        return Optional.of(entry);
+        if (iid != null) {
+            Optional<OvsdbBridgeAugmentation> ovsdbBridgeOptional = getOvsdbBridgeAugmentation(iid);
+            if (ovsdbBridgeOptional.isPresent() && ovsdbBridgeOptional.get().getProtocolEntry() != null) {
+                ProtocolEntryKey key = iid.firstKeyOf(ProtocolEntry.class, ProtocolEntryKey.class);
+                if (key != null) {
+                    for (ProtocolEntry entry: ovsdbBridgeOptional.get().getProtocolEntry()) {
+                        if (entry.getKey().equals(key)) {
+                            return Optional.of(entry);
+                        }
                     }
                 }
             }