diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-10-21 10:29:50 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-10-21 10:29:50 +0200 |
commit | 3e52a206bc2fb9cbf34fdbb088ce734877d545b4 (patch) | |
tree | 759c67d141ec0afaaf88763e3022ba166a7513bf /node-repository | |
parent | 85f0012937e76a96414c9fc9402b270186fcc9f4 (diff) |
Extend AbstractFilteringList
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerList.java | 32 |
1 files changed, 7 insertions, 25 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerList.java index bad16bf7d12..93c89a7485e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerList.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerList.java @@ -1,46 +1,28 @@ // Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.lb; +import com.yahoo.collections.AbstractFilteringList; + import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** * A filterable load balancer list. This is immutable. * * @author mpolden */ -public class LoadBalancerList implements Iterable<LoadBalancer> { - - private final List<LoadBalancer> loadBalancers; +public class LoadBalancerList extends AbstractFilteringList<LoadBalancer, LoadBalancerList> { - private LoadBalancerList(Collection<LoadBalancer> loadBalancers) { - this.loadBalancers = List.copyOf(Objects.requireNonNull(loadBalancers, "loadBalancers must be non-null")); + protected LoadBalancerList(Collection<LoadBalancer> items, boolean negate) { + super(items, negate, LoadBalancerList::new); } /** Returns the subset of load balancers that are in given state */ public LoadBalancerList in(LoadBalancer.State state) { - return of(loadBalancers.stream().filter(lb -> lb.state() == state)); - } - - public List<LoadBalancer> asList() { - return loadBalancers; - } - - private static LoadBalancerList of(Stream<LoadBalancer> stream) { - return new LoadBalancerList(stream.collect(Collectors.toUnmodifiableList())); + return matching(lb -> lb.state() == state); } public static LoadBalancerList copyOf(Collection<LoadBalancer> loadBalancers) { - return new LoadBalancerList(loadBalancers); - } - - @Override - public Iterator<LoadBalancer> iterator() { - return loadBalancers.iterator(); + return new LoadBalancerList(loadBalancers, false); } } |