Compare commits

..

1 commit

Author SHA1 Message Date
Erik C. Thauvin 70a53417b9
Merge 3160161299 into 737927da26 2026-01-22 08:20:08 +00:00

View file

@ -11,7 +11,6 @@ import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static rife.bld.operations.CompileOperation.COMPILE_OPTION_MODULE_PATH; import static rife.bld.operations.CompileOperation.COMPILE_OPTION_MODULE_PATH;
@ -89,34 +88,26 @@ public class JavacOptions extends ArrayList<String> {
return collection != null && !collection.isEmpty(); return collection != null && !collection.isEmpty();
} }
/**
* Helper method to add delimited options
*/
private JavacOptions addDelimitedOption(String option, Collection<String> values, String separator) {
if (isNotEmpty(values)) {
var joined = values.stream()
.filter(Objects::nonNull)
.collect(Collectors.joining(separator));
if (!joined.isEmpty()) {
add(option);
add(joined);
}
}
return this;
}
/** /**
* Helper method to add path-based options * Helper method to add path-based options
*/ */
private JavacOptions addPathOption(String option, Collection<String> paths) { private JavacOptions addPathOption(String option, Collection<String> paths) {
return addDelimitedOption(option, paths, File.pathSeparator); if (isNotEmpty(paths)) {
add(option);
add(String.join(File.pathSeparator, paths));
}
return this;
} }
/** /**
* Helper method to add comma-separated options * Helper method to add comma-separated options
*/ */
private JavacOptions addCommaSeparatedOption(String option, Collection<String> values) { private JavacOptions addCommaSeparatedOption(String option, Collection<String> values) {
return addDelimitedOption(option, values, ","); if (isNotEmpty(values)) {
add(option);
add(String.join(",", values));
}
return this;
} }
/** /**
@ -154,11 +145,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions addExports(Collection<String> modules) { public JavacOptions addExports(Collection<String> modules) {
if (isNotEmpty(modules)) {
return addCommaSeparatedOption("--add-exports", modules); return addCommaSeparatedOption("--add-exports", modules);
} }
return this;
}
/** /**
* Specifies additional modules to be considered as required by a given module * Specifies additional modules to be considered as required by a given module
@ -180,11 +168,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions addReads(Collection<String> modules) { public JavacOptions addReads(Collection<String> modules) {
if (isNotEmpty(modules)) {
return addCommaSeparatedOption("--add-reads", modules); return addCommaSeparatedOption("--add-reads", modules);
} }
return this;
}
/** /**
* Root modules to resolve in addition to the initial modules, * Root modules to resolve in addition to the initial modules,
@ -208,11 +193,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 1.5.18 * @since 1.5.18
*/ */
public JavacOptions addModules(Collection<String> modules) { public JavacOptions addModules(Collection<String> modules) {
if (isNotEmpty(modules)) {
return addCommaSeparatedOption("--add-modules", modules); return addCommaSeparatedOption("--add-modules", modules);
} }
return this;
}
/** /**
* Specify character encoding used by source files * Specify character encoding used by source files
@ -281,11 +263,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 1.5.18 * @since 1.5.18
*/ */
public JavacOptions endorsedDirs(Collection<File> dirs) { public JavacOptions endorsedDirs(Collection<File> dirs) {
if (isNotEmpty(dirs)) {
return endorsedDirsStrings(dirs.stream().map(File::getAbsolutePath).toList()); return endorsedDirsStrings(dirs.stream().map(File::getAbsolutePath).toList());
} }
return this;
}
/** /**
* Override location of endorsed standards path * Override location of endorsed standards path
@ -307,11 +286,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.1 * @since 2.1
*/ */
public JavacOptions endorsedDirsPaths(Collection<Path> dirs) { public JavacOptions endorsedDirsPaths(Collection<Path> dirs) {
if (isNotEmpty(dirs)) {
return endorsedDirs(dirs.stream().map(Path::toFile).toList()); return endorsedDirs(dirs.stream().map(Path::toFile).toList());
} }
return this;
}
/** /**
* Override location of endorsed standards path * Override location of endorsed standards path
@ -333,7 +309,11 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.1 * @since 2.1
*/ */
public JavacOptions endorsedDirsStrings(Collection<String> dirs) { public JavacOptions endorsedDirsStrings(Collection<String> dirs) {
return addCommaSeparatedOption("-endorseddirs", dirs); if (isNotEmpty(dirs)) {
add("-endorseddirs");
add(String.join(",", dirs));
}
return this;
} }
/** /**
@ -356,11 +336,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 1.5.18 * @since 1.5.18
*/ */
public JavacOptions extDirs(Collection<File> dirs) { public JavacOptions extDirs(Collection<File> dirs) {
if (isNotEmpty(dirs)) {
return extDirsStrings(dirs.stream().map(File::getAbsolutePath).toList()); return extDirsStrings(dirs.stream().map(File::getAbsolutePath).toList());
} }
return this;
}
/** /**
* Override location of installed extensions * Override location of installed extensions
@ -382,11 +359,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.1 * @since 2.1
*/ */
public JavacOptions extDirsPaths(Collection<Path> dirs) { public JavacOptions extDirsPaths(Collection<Path> dirs) {
if (isNotEmpty(dirs)) {
return extDirs(dirs.stream().map(Path::toFile).toList()); return extDirs(dirs.stream().map(Path::toFile).toList());
} }
return this;
}
/** /**
* Override location of installed extensions * Override location of installed extensions
@ -408,7 +382,11 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.1 * @since 2.1
*/ */
public JavacOptions extDirsStrings(Collection<String> dirs) { public JavacOptions extDirsStrings(Collection<String> dirs) {
return addCommaSeparatedOption("-extdirs", dirs); if (isNotEmpty(dirs)) {
add("-extdirs");
add(String.join(",", dirs));
}
return this;
} }
/** /**
@ -548,11 +526,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 1.5.18 * @since 1.5.18
*/ */
public JavacOptions limitModules(Collection<String> modules) { public JavacOptions limitModules(Collection<String> modules) {
if (isNotEmpty(modules)) {
return addCommaSeparatedOption("--limit-modules", modules); return addCommaSeparatedOption("--limit-modules", modules);
} }
return this;
}
/** /**
* Compile only the specified module(s), check timestamps * Compile only the specified module(s), check timestamps
@ -574,11 +549,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 1.5.18 * @since 1.5.18
*/ */
public JavacOptions module(Collection<String> modules) { public JavacOptions module(Collection<String> modules) {
if (isNotEmpty(modules)) {
return addCommaSeparatedOption("--module", modules); return addCommaSeparatedOption("--module", modules);
} }
return this;
}
/** /**
* /** * /**
@ -601,11 +573,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 1.6.2 * @since 1.6.2
*/ */
public JavacOptions modulePath(Collection<File> paths) { public JavacOptions modulePath(Collection<File> paths) {
if (isNotEmpty(paths)) {
return modulePathStrings(paths.stream().map(File::getAbsolutePath).toList()); return modulePathStrings(paths.stream().map(File::getAbsolutePath).toList());
} }
return this;
}
/** /**
* Specify where to find application modules * Specify where to find application modules
@ -627,11 +596,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.1 * @since 2.1
*/ */
public JavacOptions modulePathPaths(Collection<Path> paths) { public JavacOptions modulePathPaths(Collection<Path> paths) {
if (isNotEmpty(paths)) {
return modulePathStrings(paths.stream().map(Path::toString).toList()); return modulePathStrings(paths.stream().map(Path::toString).toList());
} }
return this;
}
/** /**
* Specify where to find application modules * Specify where to find application modules
@ -653,11 +619,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.1 * @since 2.1
*/ */
public JavacOptions modulePathStrings(Collection<String> paths) { public JavacOptions modulePathStrings(Collection<String> paths) {
if (isNotEmpty(paths)) {
return addPathOption(COMPILE_OPTION_MODULE_PATH, paths); return addPathOption(COMPILE_OPTION_MODULE_PATH, paths);
} }
return this;
}
/** /**
* Specify where to find input source files for multiple modules * Specify where to find input source files for multiple modules
@ -666,11 +629,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions moduleSourcePathStrings(Collection<String> paths) { public JavacOptions moduleSourcePathStrings(Collection<String> paths) {
if (isNotEmpty(paths)) {
return addPathOption("--module-source-path", paths); return addPathOption("--module-source-path", paths);
} }
return this;
}
/** /**
* Specify where to find input source files for multiple modules * Specify where to find input source files for multiple modules
@ -679,11 +639,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions moduleSourcePathPaths(Collection<Path> paths) { public JavacOptions moduleSourcePathPaths(Collection<Path> paths) {
if (isNotEmpty(paths)) {
return moduleSourcePathStrings(paths.stream().map(Path::toString).toList()); return moduleSourcePathStrings(paths.stream().map(Path::toString).toList());
} }
return this;
}
/** /**
* Specify where to find input source files for multiple modules * Specify where to find input source files for multiple modules
@ -692,11 +649,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions moduleSourcePath(Collection<File> paths) { public JavacOptions moduleSourcePath(Collection<File> paths) {
if (isNotEmpty(paths)) {
return moduleSourcePathStrings(paths.stream().map(File::getPath).toList()); return moduleSourcePathStrings(paths.stream().map(File::getPath).toList());
} }
return this;
}
/** /**
* Specify where to find input source files for multiple modules * Specify where to find input source files for multiple modules
@ -802,11 +756,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 1.5.18 * @since 1.5.18
*/ */
public JavacOptions processors(Collection<String> classnames) { public JavacOptions processors(Collection<String> classnames) {
if (isNotEmpty(classnames)) {
return addCommaSeparatedOption("-processor", classnames); return addCommaSeparatedOption("-processor", classnames);
} }
return this;
}
/** /**
* Specify a module path where to find annotation processors * Specify a module path where to find annotation processors
@ -854,11 +805,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions processorModulePathPaths(Collection<Path> paths) { public JavacOptions processorModulePathPaths(Collection<Path> paths) {
if (isNotEmpty(paths)) {
return processorModulePathStrings(paths.stream().map(Path::toString).toList()); return processorModulePathStrings(paths.stream().map(Path::toString).toList());
} }
return this;
}
/** /**
* Specify a module path where to find annotation processors * Specify a module path where to find annotation processors
@ -867,11 +815,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions processorModulePathStrings(Collection<String> paths) { public JavacOptions processorModulePathStrings(Collection<String> paths) {
if (isNotEmpty(paths)) {
return addPathOption("--processor-module-path", paths); return addPathOption("--processor-module-path", paths);
} }
return this;
}
/** /**
* Specify a module path where to find annotation processors * Specify a module path where to find annotation processors
@ -880,11 +825,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions processorModulePath(Collection<File> paths) { public JavacOptions processorModulePath(Collection<File> paths) {
if (isNotEmpty(paths)) {
return processorModulePathStrings(paths.stream().map(File::getAbsolutePath).toList()); return processorModulePathStrings(paths.stream().map(File::getAbsolutePath).toList());
} }
return this;
}
/** /**
* Specify where to find annotation processors * Specify where to find annotation processors
@ -932,11 +874,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions processorPathStrings(Collection<String> paths) { public JavacOptions processorPathStrings(Collection<String> paths) {
if (isNotEmpty(paths)) {
return addPathOption("--processor-path", paths); return addPathOption("--processor-path", paths);
} }
return this;
}
/** /**
* Specify where to find annotation processors * Specify where to find annotation processors
@ -945,11 +884,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions processorPath(Collection<File> paths) { public JavacOptions processorPath(Collection<File> paths) {
if (isNotEmpty(paths)) {
return processorPathStrings(paths.stream().map(File::getAbsolutePath).toList()); return processorPathStrings(paths.stream().map(File::getAbsolutePath).toList());
} }
return this;
}
/** /**
* Specify where to find annotation processors * Specify where to find annotation processors
@ -958,11 +894,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions processorPathPaths(Collection<Path> paths) { public JavacOptions processorPathPaths(Collection<Path> paths) {
if (isNotEmpty(paths)) {
return processorPathStrings(paths.stream().map(Path::toString).toList()); return processorPathStrings(paths.stream().map(Path::toString).toList());
} }
return this;
}
/** /**
* Check that the API used is available in the specified profile * Check that the API used is available in the specified profile
@ -1069,11 +1002,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions upgradeModulePathStrings(Collection<String> paths) { public JavacOptions upgradeModulePathStrings(Collection<String> paths) {
if (isNotEmpty(paths)) {
return addPathOption("--upgrade-module-path", paths); return addPathOption("--upgrade-module-path", paths);
} }
return this;
}
/** /**
* Override location of upgradeable modules * Override location of upgradeable modules
@ -1082,11 +1012,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions upgradeModulePath(Collection<File> paths) { public JavacOptions upgradeModulePath(Collection<File> paths) {
if (isNotEmpty(paths)) {
return upgradeModulePathStrings(paths.stream().map(File::getAbsolutePath).toList()); return upgradeModulePathStrings(paths.stream().map(File::getAbsolutePath).toList());
} }
return this;
}
/** /**
* Override location of upgradeable modules * Override location of upgradeable modules
@ -1095,11 +1022,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions upgradeModulePathPaths(Collection<Path> paths) { public JavacOptions upgradeModulePathPaths(Collection<Path> paths) {
if (isNotEmpty(paths)) {
return upgradeModulePathStrings(paths.stream().map(Path::toString).toList()); return upgradeModulePathStrings(paths.stream().map(Path::toString).toList());
} }
return this;
}
/** /**
* Terminate compilation if warnings occur * Terminate compilation if warnings occur
@ -1143,11 +1067,8 @@ public class JavacOptions extends ArrayList<String> {
* @since 2.3.1 * @since 2.3.1
*/ */
public JavacOptions xLint(Collection<XLintKey> keys) { public JavacOptions xLint(Collection<XLintKey> keys) {
if (isNotEmpty(keys)) {
return addXLintOption(keys, ""); return addXLintOption(keys, "");
} }
return this;
}
/** /**
* Warning categories to disable * Warning categories to disable