Throw illegalargumentexception instead of nullpointerexception for builder errors

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld
2018-12-11 02:28:34 +01:00
parent c1ba1f409c
commit 266ee7626c
3 changed files with 10 additions and 3 deletions
@@ -44,11 +44,14 @@ public final class Interface {
private final Optional<Integer> mtu;
private Interface(final Builder builder) {
if (builder.keyPair == null)
throw new IllegalArgumentException("Interfaces must have a private key");
// Defensively copy to ensure immutability even if the Builder is reused.
addresses = Collections.unmodifiableSet(new LinkedHashSet<>(builder.addresses));
dnsServers = Collections.unmodifiableSet(new LinkedHashSet<>(builder.dnsServers));
excludedApplications = Collections.unmodifiableSet(new LinkedHashSet<>(builder.excludedApplications));
keyPair = Objects.requireNonNull(builder.keyPair, "Interfaces must have a private key");
keyPair = builder.keyPair;
listenPort = builder.listenPort;
mtu = builder.mtu;
}