import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.util.concurrent.FluentFuture;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.defined.sets.bgp.defined.sets.as.path.sets.AsPathSetKey;
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.MatchSetOptionsType;
+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.routing.policy.top.RoutingPolicy;
import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009.routing.policy.top.routing.policy.DefinedSets;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
* Match a set of AS (All, ANY, INVERT).
*/
public final class MatchAsPathSetHandler implements BgpConditionsPolicy<MatchAsPathSet, AsPath> {
- private static final InstanceIdentifier<AsPathSets> AS_PATHS_SETS_IID
- = InstanceIdentifier.create(RoutingPolicy.class).child(DefinedSets.class)
- .augmentation(DefinedSets1.class).child(BgpDefinedSets.class)
+ private static final InstanceIdentifier<AsPathSets> AS_PATHS_SETS_IID =
+ InstanceIdentifier.builderOfInherited(OpenconfigRoutingPolicyData.class, RoutingPolicy.class).build()
+ .child(DefinedSets.class)
+ .augmentation(DefinedSets1.class)
+ .child(BgpDefinedSets.class)
.child(AsPathSets.class);
private final DataBroker dataBroker;
private final LoadingCache<String, AsPathSet> sets = CacheBuilder.newBuilder()
this.dataBroker = requireNonNull(dataBroker);
}
- @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
- justification = "https://github.com/spotbugs/spotbugs/issues/811")
private AsPathSet loadSets(final String key) throws ExecutionException, InterruptedException {
final FluentFuture<Optional<AsPathSet>> future;
- try (ReadTransaction tr = this.dataBroker.newReadOnlyTransaction()) {
+ try (ReadTransaction tr = dataBroker.newReadOnlyTransaction()) {
future = tr.read(LogicalDatastoreType.CONFIGURATION,
AS_PATHS_SETS_IID.child(AsPathSet.class, new AsPathSetKey(key)));
}
if (asPath == null) {
return false;
}
- final AsPathSet asPathSetFilter = this.sets.getUnchecked(StringUtils
+ final AsPathSet asPathSetFilter = sets.getUnchecked(StringUtils
.substringBetween(asPathSetName, "=\"", "\""));
final List<Segments> segments = asPath.getSegments();
List<AsNumber> allAs = Stream.of(l1, l2).flatMap(Collection::stream).collect(Collectors.toList());
- final List<AsNumber> asPathSetFilterList = asPathSetFilter.getAsPathSetMember();
+ final Set<AsNumber> asPathSetFilterList = asPathSetFilter.getAsPathSetMember();
if (matchSetOptions.equals(MatchSetOptionsType.ALL)) {
return allAs.containsAll(asPathSetFilterList)
&& asPathSetFilterList.containsAll(allAs);