8219548: Better Null paramenter checking in ToolProvider

Reviewed-by: lancea, alanb, jjg
This commit is contained in:
Philipp Kunz 2019-02-26 13:14:26 -05:00 committed by Lance Andersen
parent cd9fb366a5
commit 24af91dc02
2 changed files with 35 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -126,8 +126,9 @@ public interface ToolProvider {
default int run(PrintStream out, PrintStream err, String... args) {
Objects.requireNonNull(out);
Objects.requireNonNull(err);
Objects.requireNonNull(args);
for (String arg : args) {
Objects.requireNonNull(args);
Objects.requireNonNull(arg);
}
PrintWriter outWriter = new PrintWriter(out);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -28,7 +28,6 @@
* @run main/othervm ToolProviderTest
*/
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
@ -46,6 +45,10 @@ public class ToolProviderTest {
void run() throws Exception {
initServices();
System.out.println("Validate an NPE is thrown with null arguments");
testNullArgs();
System.out.println("test without security manager present:");
test();
@ -63,6 +66,33 @@ public class ToolProviderTest {
}
}
private void testNullArgs() {
ToolProvider testProvider = ToolProvider.findFirst("test").get();
// out null check
expectNullPointerException(() -> testProvider.run(null, System.err));
// err null check
expectNullPointerException(() -> testProvider.run(System.out, null));
// args array null check
expectNullPointerException(() ->
testProvider.run(System.out, System.err, (String[]) null));
// args array elements null check
expectNullPointerException(() ->
testProvider.run(System.out, System.err, (String) null));
}
private static void expectNullPointerException(Runnable test) {
try {
test.run();
throw new Error("NullPointerException not thrown");
} catch (NullPointerException e) {
// expected
}
}
private void initServices() throws IOException {
Path testClasses = Paths.get(System.getProperty("test.classes"));
Path services = testClasses.resolve(Paths.get("META-INF", "services"));