Access augmentations only once 87/72687/4
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 5 Jun 2018 11:57:39 +0000 (13:57 +0200)
committerClaudio David Gasparini <claudio.gasparini@pantheon.tech>
Mon, 11 Jun 2018 08:25:44 +0000 (08:25 +0000)
Cache the result, making the code simpler and faster.

Change-Id: Ib7f56ca8ec6d71633d76964af856d05367c9f212
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java

index 28d98d89ba88b76e94f7b0d6b4cb1aaa9ff20a12..8bda14ff032265bef903f740ad8acceaec26e46a 100644 (file)
@@ -143,18 +143,20 @@ public class BGPSessionImpl extends SimpleChannelInboundHandler<Notification> im
             for (final BgpParameters param : remoteOpen.getBgpParameters()) {
                 for (final OptionalCapabilities optCapa : param.getOptionalCapabilities()) {
                     final CParameters cParam = optCapa.getCParameters();
-                    if (cParam.augmentation(CParameters1.class) == null) {
-                        continue;
-                    }
-                    if (cParam.augmentation(CParameters1.class).getMultiprotocolCapability() != null) {
-                        final MultiprotocolCapability multi = cParam.augmentation(CParameters1.class).getMultiprotocolCapability();
-                        final TablesKey tt = new TablesKey(multi.getAfi(), multi.getSafi());
-                        LOG.trace("Added table type to sync {}", tt);
-                        tts.add(tt);
-                        tats.add(new BgpTableTypeImpl(tt.getAfi(), tt.getSafi()));
-                    } else if (cParam.augmentation(CParameters1.class).getAddPathCapability() != null) {
-                        final AddPathCapability addPathCap = cParam.augmentation(CParameters1.class).getAddPathCapability();
-                        addPathCapabilitiesList.addAll(addPathCap.getAddressFamilies());
+                    final CParameters1 cParam1 = cParam.augmentation(CParameters1.class);
+                    if (cParam1 != null) {
+                        final MultiprotocolCapability multi = cParam1.getMultiprotocolCapability();
+                        if (multi != null) {
+                            final TablesKey tt = new TablesKey(multi.getAfi(), multi.getSafi());
+                            LOG.trace("Added table type to sync {}", tt);
+                            tts.add(tt);
+                            tats.add(new BgpTableTypeImpl(tt.getAfi(), tt.getSafi()));
+                        } else {
+                            final AddPathCapability addPathCap = cParam1.getAddPathCapability();
+                            if (addPathCap != null) {
+                                addPathCapabilitiesList.addAll(addPathCap.getAddressFamilies());
+                            }
+                        }
                     }
                 }
             }