8199768: jdk/test/lib/compiler/CompilerUtils.java needs to provide more control over compilation

Reviewed-by: psandoz, alanb
This commit is contained in:
David Holmes 2018-03-19 17:46:49 -04:00
parent b45137814b
commit feea6b06c3

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2018, 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
@ -47,8 +47,14 @@ public final class CompilerUtils {
* {@code <destination>/**}. The destination directory will be created if
* it doesn't exist.
*
* Equivalent to calling {@code compile(source, destination, true, options);}.
*
* All warnings/errors emitted by the compiler are output to System.out/err.
*
* @param source Path to the source directory
* @param destination Path to the destination directory
* @param options Any options to pass to the compiler
*
* @return true if the compilation is successful
*
* @throws IOException
@ -59,6 +65,36 @@ public final class CompilerUtils {
*/
public static boolean compile(Path source, Path destination, String... options)
throws IOException
{
return compile(source, destination, true, options);
}
/**
* Compile all the java sources in {@code <source>} and optionally its
* subdirectories, to
* {@code <destination>}. The destination directory will be created if
* it doesn't exist.
*
* All warnings/errors emitted by the compiler are output to System.out/err.
*
* @param source Path to the source directory
* @param destination Path to the destination directory
* @param recurse If {@code true} recurse into any {@code source} subdirectories
* to compile all java source files; else only compile those directly in
* {@code source}.
* @param options Any options to pass to the compiler
*
* @return true if the compilation is successful
*
* @throws IOException
* if there is an I/O error scanning the source tree or
* creating the destination directory
* @throws UnsupportedOperationException
* if there is no system java compiler
*/
public static boolean compile(Path source, Path destination, boolean recurse, String... options)
throws IOException
{
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
if (compiler == null) {
@ -69,7 +105,7 @@ public final class CompilerUtils {
StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null);
List<Path> sources
= Files.find(source, Integer.MAX_VALUE,
= Files.find(source, (recurse ? Integer.MAX_VALUE : 1),
(file, attrs) -> (file.toString().endsWith(".java")))
.collect(Collectors.toList());