Bump upstreams to 2022.09
[bgpcep.git] / bgp / openconfig-rp-statement / src / main / java / org / opendaylight / protocol / bgp / openconfig / routing / policy / statement / conditions / MatchBgpNeighborSetHandler.java
index 73c45e4aa1904cd852fd761893458d8ef9008fb1..0e1a594a9335b948e0e8b72c99ce0392a7c0e077 100644 (file)
@@ -12,8 +12,7 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import java.util.Collections;
+import com.google.common.util.concurrent.FluentFuture;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
@@ -29,6 +28,7 @@ import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryExportParameter
 import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryImportParameters;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.policy.types.rev151009.MatchSetOptionsRestrictedType;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009.OpenconfigRoutingPolicyData;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009.generic.defined.sets.NeighborSets;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009.neighbor.set.NeighborSet;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009.neighbor.set.NeighborSetKey;
@@ -46,13 +46,13 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  */
 public final class MatchBgpNeighborSetHandler
         implements BgpConditionsAugmentationPolicy<MatchBgpNeighborCondition, Void> {
-    private static final InstanceIdentifier<NeighborSets> NEIGHBOR_SET_IID
-            = InstanceIdentifier.create(RoutingPolicy.class)
+    private static final InstanceIdentifier<NeighborSets> NEIGHBOR_SET_IID =
+        InstanceIdentifier.builderOfInherited(OpenconfigRoutingPolicyData.class, RoutingPolicy.class).build()
             .child(DefinedSets.class)
             .child(NeighborSets.class);
     private final DataBroker dataBroker;
     private final LoadingCache<String, List<PeerId>> peerSets = CacheBuilder.newBuilder()
-            .build(new CacheLoader<String, List<PeerId>>() {
+            .build(new CacheLoader<>() {
                 @Override
                 public List<PeerId> load(final String key) throws ExecutionException, InterruptedException {
                     return loadRoleSets(key);
@@ -63,23 +63,21 @@ public final class MatchBgpNeighborSetHandler
         this.dataBroker = requireNonNull(dataBroker);
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private List<PeerId> loadRoleSets(final String key) throws ExecutionException, InterruptedException {
-        final ReadTransaction tr = this.dataBroker.newReadOnlyTransaction();
-        final Optional<NeighborSet> result = tr.read(LogicalDatastoreType.CONFIGURATION,
-                NEIGHBOR_SET_IID.child(NeighborSet.class, new NeighborSetKey(key))).get();
-        if (!result.isPresent()) {
-            return Collections.emptyList();
+        final FluentFuture<Optional<NeighborSet>> future;
+        try (ReadTransaction tr = dataBroker.newReadOnlyTransaction()) {
+            future = tr.read(LogicalDatastoreType.CONFIGURATION,
+                    NEIGHBOR_SET_IID.child(NeighborSet.class, new NeighborSetKey(key)));
+
         }
-        return result.get().getNeighbor().values().stream()
-                .map(nei -> RouterIds.createPeerId(nei.getAddress()))
-                .collect(Collectors.toList());
+        return future.get().map(neighboursSet -> neighboursSet.getNeighbor().values().stream()
+                                                         .map(nei -> RouterIds.createPeerId(nei.getAddress()))
+                                                         .collect(Collectors.toUnmodifiableList())).orElse(List.of());
     }
 
     @Override
     public boolean matchImportCondition(
-            final Class<? extends AfiSafiType> afiSafi,
+            final AfiSafiType afiSafi,
             final RouteEntryBaseAttributes routeEntryInfo,
             final BGPRouteEntryImportParameters importParameters,
             final Void nonAttributres,
@@ -90,7 +88,7 @@ public final class MatchBgpNeighborSetHandler
 
     @Override
     public boolean matchExportCondition(
-            final Class<? extends AfiSafiType> afiSafi,
+            final AfiSafiType afiSafi,
             final RouteEntryBaseAttributes routeEntryInfo,
             final BGPRouteEntryExportParameters exportParameters,
             final Void nonAttributres,
@@ -126,7 +124,7 @@ public final class MatchBgpNeighborSetHandler
             final String neighborSetName,
             final PeerId peerId,
             final MatchSetOptionsRestrictedType matchSetOptions) {
-        final List<PeerId> roles = this.peerSets.getUnchecked(StringUtils
+        final List<PeerId> roles = peerSets.getUnchecked(StringUtils
                 .substringBetween(neighborSetName, "=\"", "\""));
 
         final boolean found = roles.contains(peerId);