Cache DataTreeModification.getDataAfter() 25/77825/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 14 Nov 2018 21:34:43 +0000 (22:34 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 14 Nov 2018 21:36:11 +0000 (22:36 +0100)
Invoking this method is quite costly in case of
LazyDataTreeModification, so cache the returned value, preventing
a potentially-costly operation.

Change-Id: Ibb3169fe77b0d6d2f11dae244a1fe110c37b659e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/HwvtepHAUtil.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/listeners/HwvtepNodeBaseListener.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/merge/MergeCommandsAggregator.java

index 8f05dd0eb355a6d98f129822c76c12f58f63f7a0..867bbba46d20a56415d1c20e538483932282dbb9 100644 (file)
@@ -233,20 +233,13 @@ public final class HwvtepHAUtil {
 
     @Nullable
     public static Node getUpdated(DataObjectModification<Node> mod) {
-        Node node = null;
         switch (mod.getModificationType()) {
             case SUBTREE_MODIFIED:
-                node = mod.getDataAfter();
-                break;
             case WRITE:
-                if (mod.getDataAfter() !=  null) {
-                    node = mod.getDataAfter();
-                }
-                break;
+                return mod.getDataAfter();
             default:
-                break;
+                return null;
         }
-        return node;
     }
 
     @Nullable
index 3c6ed7b857f9b706682d4e69aed921fcccf944ed..b0b4729736a84a635a55463918b15a21f8e6d06e 100644 (file)
@@ -174,7 +174,8 @@ public abstract class HwvtepNodeBaseListener<D extends Datastore>
     }
 
     private String logicalSwitchNameFromChildMod(DataObjectModification<? extends DataObject> childMod) {
-        DataObject data = childMod.getDataAfter() != null ? childMod.getDataAfter() : childMod.getDataBefore();
+        DataObject dataAfter = childMod.getDataAfter();
+        DataObject data = dataAfter != null ? dataAfter : childMod.getDataBefore();
         return LOGICAL_SWITCH_EXTRACTOR.getOrDefault(childMod.getModificationType().getClass(), noLogicalSwitch)
                 .apply(data);
     }
index 1cc4d8936782f1ec9f434c949fa8c060b608d086..176765d4e7b5ea75447fa6d39cb3e209694491c9 100644 (file)
@@ -101,8 +101,9 @@ public abstract class MergeCommandsAggregator<BuilderTypeT extends Builder, AugT
                     datastoreType, modification, dstPath))
             .forEach(modification -> {
                 MergeCommand mergeCommand = commands.get(modification.getDataType());
-                boolean create = modification.getDataAfter() != null;
-                DataObject data = create ? modification.getDataAfter() : modification.getDataBefore();
+                DataObject dataAfter = modification.getDataAfter();
+                boolean create = dataAfter != null;
+                DataObject data = create ? dataAfter : modification.getDataBefore();
                 InstanceIdentifier<DataObject> transformedId = mergeCommand.generateId(dstPath, data);
                 DataObject transformedItem = mergeCommand.transform(dstPath, data);