http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Java.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/Java.java b/src/main/org/apache/tools/ant/taskdefs/Java.java index ed9f906..b4b5a7e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Java.java +++ b/src/main/org/apache/tools/ant/taskdefs/Java.java @@ -20,8 +20,6 @@ package org.apache.tools.ant.taskdefs; import java.io.File; import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; import java.util.Vector; import org.apache.tools.ant.BuildException; @@ -52,6 +50,8 @@ import org.apache.tools.ant.util.StringUtils; * @ant.task category="java" */ public class Java extends Task { + private static final String TIMEOUT_MESSAGE = + "Timeout: killed the sub-process"; private CommandlineJava cmdl = new CommandlineJava(); private Environment env = new Environment(); @@ -78,9 +78,6 @@ public class Java extends Task { private boolean spawn = false; private boolean incompatibleWithSpawn = false; - private static final String TIMEOUT_MESSAGE = - "Timeout: killed the sub-process"; - /** * Normal constructor */ @@ -100,6 +97,7 @@ public class Java extends Task { * @throws BuildException if failOnError is set to true and the application * returns a nonzero result code. */ + @Override public void execute() throws BuildException { File savedDir = dir; Permissions savedPermissions = perm; @@ -148,30 +146,32 @@ public class Java extends Task { throw new BuildException("Classname must not be null."); } if (!fork && getCommandLine().getJar() != null) { - throw new BuildException("Cannot execute a jar in non-forked mode." - + " Please set fork='true'. "); + throw new BuildException( + "Cannot execute a jar in non-forked mode. Please set fork='true'. "); } if (!fork && getCommandLine().getModule() != null) { - throw new BuildException("Cannot execute a module in non-forked mode." - + " Please set fork='true'. "); + throw new BuildException( + "Cannot execute a module in non-forked mode. Please set fork='true'. "); } if (spawn && !fork) { - throw new BuildException("Cannot spawn a java process in non-forked mode." - + " Please set fork='true'. "); + throw new BuildException( + "Cannot spawn a java process in non-forked mode. Please set fork='true'. "); } if (getCommandLine().getClasspath() != null && getCommandLine().getJar() != null) { - log("When using 'jar' attribute classpath-settings are ignored. " - + "See the manual for more information.", Project.MSG_VERBOSE); + log("When using 'jar' attribute classpath-settings are ignored. See the manual for more information.", + Project.MSG_VERBOSE); } if (spawn && incompatibleWithSpawn) { - getProject().log("spawn does not allow attributes related to input, " - + "output, error, result", Project.MSG_ERR); + getProject().log( + "spawn does not allow attributes related to input, output, error, result", + Project.MSG_ERR); getProject().log("spawn also does not allow timeout", Project.MSG_ERR); - getProject().log("finally, spawn is not compatible " - + "with a nested I/O <redirector>", Project.MSG_ERR); - throw new BuildException("You have used an attribute " - + "or nested element which is not compatible with spawn"); + getProject().log( + "finally, spawn is not compatible with a nested I/O <redirector>", + Project.MSG_ERR); + throw new BuildException( + "You have used an attribute or nested element which is not compatible with spawn"); } if (getCommandLine().getAssertions() != null && !fork) { log("Assertion statements are currently ignored in non-forked mode"); @@ -191,8 +191,8 @@ public class Java extends Task { Project.MSG_WARN); } if (newEnvironment || null != env.getVariables()) { - log("Changes to environment variables are ignored when same " - + "JVM is used.", Project.MSG_WARN); + log("Changes to environment variables are ignored when same JVM is used.", + Project.MSG_WARN); } if (getCommandLine().getBootclasspath() != null) { log("bootclasspath ignored when same JVM is used.", @@ -217,19 +217,17 @@ public class Java extends Task { protected int executeJava(CommandlineJava commandLine) { try { if (fork) { - if (!spawn) { - return fork(commandLine.getCommandline()); - } else { + if (spawn) { spawn(commandLine.getCommandline()); return 0; } - } else { - try { - run(commandLine); - return 0; - } catch (ExitException ex) { - return ex.getStatus(); - } + return fork(commandLine.getCommandline()); + } + try { + run(commandLine); + return 0; + } catch (ExitException ex) { + return ex.getStatus(); } } catch (BuildException e) { if (e.getLocation() == null && getLocation() != null) { @@ -237,23 +235,21 @@ public class Java extends Task { } if (failOnError) { throw e; + } + if (TIMEOUT_MESSAGE.equals(e.getMessage())) { + log(TIMEOUT_MESSAGE); } else { - if (TIMEOUT_MESSAGE.equals(e.getMessage())) { - log(TIMEOUT_MESSAGE); - } else { - log(e); - } - return -1; + log(e); } + return -1; } catch (ThreadDeath t) { throw t; // cf. NB #47191 } catch (Throwable t) { if (failOnError) { throw new BuildException(t, getLocation()); - } else { - log(t); - return -1; } + log(t); + return -1; } } @@ -363,8 +359,8 @@ public class Java extends Task { */ public void setJar(File jarfile) throws BuildException { if (getCommandLine().getClassname() != null || getCommandLine().getModule() != null) { - throw new BuildException("Cannot use 'jar' with 'classname' or 'module' " - + "attributes in same command."); + throw new BuildException( + "Cannot use 'jar' with 'classname' or 'module' attributes in same command."); } getCommandLine().setJar(jarfile.getAbsolutePath()); } @@ -378,8 +374,8 @@ public class Java extends Task { */ public void setClassname(String s) throws BuildException { if (getCommandLine().getJar() != null) { - throw new BuildException("Cannot use 'jar' and 'classname' " - + "attributes in same command"); + throw new BuildException( + "Cannot use 'jar' and 'classname' attributes in same command"); } getCommandLine().setClassname(s); } @@ -394,8 +390,8 @@ public class Java extends Task { */ public void setModule(String module) throws BuildException { if (getCommandLine().getJar() != null) { - throw new BuildException("Cannot use 'jar' and 'module' " - + "attributes in same command"); + throw new BuildException( + "Cannot use 'jar' and 'module' attributes in same command"); } getCommandLine().setModule(module); } @@ -409,8 +405,8 @@ public class Java extends Task { * @ant.attribute ignore="true" */ public void setArgs(String s) { - log("The args attribute is deprecated. " - + "Please use nested arg elements.", Project.MSG_WARN); + log("The args attribute is deprecated. Please use nested arg elements.", + Project.MSG_WARN); getCommandLine().createArgument().setLine(s); } @@ -477,8 +473,8 @@ public class Java extends Task { * @param s jvmargs. */ public void setJvmargs(String s) { - log("The jvmargs attribute is deprecated. " - + "Please use nested jvmarg elements.", Project.MSG_WARN); + log("The jvmargs attribute is deprecated. Please use nested jvmarg elements.", + Project.MSG_WARN); getCommandLine().createVmArgument().setLine(s); } @@ -559,8 +555,8 @@ public class Java extends Task { */ public void setInput(File input) { if (inputString != null) { - throw new BuildException("The \"input\" and \"inputstring\" " - + "attributes cannot both be specified"); + throw new BuildException( + "The \"input\" and \"inputstring\" attributes cannot both be specified"); } this.input = input; incompatibleWithSpawn = true; @@ -573,8 +569,8 @@ public class Java extends Task { */ public void setInputString(String inputString) { if (input != null) { - throw new BuildException("The \"input\" and \"inputstring\" " - + "attributes cannot both be specified"); + throw new BuildException( + "The \"input\" and \"inputstring\" attributes cannot both be specified"); } this.inputString = inputString; incompatibleWithSpawn = true; @@ -728,6 +724,7 @@ public class Java extends Task { * * @since Ant 1.5 */ + @Override protected void handleOutput(String output) { if (redirector.getOutputStream() != null) { redirector.handleOutput(output); @@ -748,6 +745,7 @@ public class Java extends Task { * @exception IOException if the data cannot be read. * @since Ant 1.6 */ + @Override public int handleInput(byte[] buffer, int offset, int length) throws IOException { // Should work whether or not redirector.inputStream == null: @@ -761,6 +759,7 @@ public class Java extends Task { * * @since Ant 1.5.2 */ + @Override protected void handleFlush(String output) { if (redirector.getOutputStream() != null) { redirector.handleFlush(output); @@ -776,6 +775,7 @@ public class Java extends Task { * * @since Ant 1.5 */ + @Override protected void handleErrorOutput(String output) { if (redirector.getErrorStream() != null) { redirector.handleErrorOutput(output); @@ -791,6 +791,7 @@ public class Java extends Task { * * @since Ant 1.5.2 */ + @Override protected void handleErrorFlush(String output) { if (redirector.getErrorStream() != null) { redirector.handleErrorFlush(output); @@ -897,8 +898,8 @@ public class Java extends Task { private void setupEnvironment(Execute exe) { String[] environment = env.getVariables(); if (environment != null) { - for (int i = 0; i < environment.length; i++) { - log("Setting environment variable: " + environment[i], + for (String element : environment) { + log("Setting environment variable: " + element, Project.MSG_VERBOSE); } } @@ -914,7 +915,7 @@ public class Java extends Task { private void setupWorkingDir(Execute exe) { if (dir == null) { dir = getProject().getBaseDir(); - } else if (!dir.exists() || !dir.isDirectory()) { + } else if (!dir.isDirectory()) { throw new BuildException(dir.getAbsolutePath() + " is not a valid directory", getLocation()); @@ -962,10 +963,7 @@ public class Java extends Task { protected void run(String classname, Vector<String> args) throws BuildException { CommandlineJava cmdj = new CommandlineJava(); cmdj.setClassname(classname); - final int size = args.size(); - for (int i = 0; i < size; i++) { - cmdj.createArgument().setValue(args.elementAt(i)); - } + args.forEach(arg -> cmdj.createArgument().setValue(arg)); run(cmdj); }
http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Javac.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/Javac.java b/src/main/org/apache/tools/ant/taskdefs/Javac.java index 6e7cee3..0e97f0a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Javac.java +++ b/src/main/org/apache/tools/ant/taskdefs/Javac.java @@ -19,7 +19,6 @@ package org.apache.tools.ant.taskdefs; import java.io.File; -import java.io.FileFilter; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Files; @@ -28,7 +27,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.TreeMap; import org.apache.tools.ant.BuildException; @@ -138,7 +136,7 @@ public class Javac extends MatchingTask { protected boolean failOnError = true; protected boolean listFiles = false; protected File[] compileList = new File[0]; - private Map<String, Long> packageInfos = new HashMap<String, Long>(); + private Map<String, Long> packageInfos = new HashMap<>(); // CheckStyle:VisibilityModifier ON private String source; @@ -162,19 +160,23 @@ public class Javac extends MatchingTask { private String assumedJavaVersion() { if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_4)) { return JAVAC14; - } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_5)) { + } + if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_5)) { return JAVAC15; - } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_6)) { + } + if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_6)) { return JAVAC16; - } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_7)) { + } + if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_7)) { return JAVAC17; - } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_8)) { + } + if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_8)) { return JAVAC18; - } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_9)) { + } + if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_9)) { return JAVAC9; - } else { - return CLASSIC; } + return CLASSIC; } /** @@ -1083,8 +1085,8 @@ public class Javac extends MatchingTask { */ public void add(final CompilerAdapter adapter) { if (nestedAdapter != null) { - throw new BuildException("Can't have more than one compiler" - + " adapter"); + throw new BuildException( + "Can't have more than one compiler adapter"); } nestedAdapter = adapter; } @@ -1131,7 +1133,7 @@ public class Javac extends MatchingTask { */ protected void resetFileLists() { compileList = new File[0]; - packageInfos = new HashMap<String, Long>(); + packageInfos = new HashMap<>(); } /** @@ -1146,8 +1148,8 @@ public class Javac extends MatchingTask { final GlobPatternMapper m = new GlobPatternMapper(); final String[] extensions = findSupportedFileExtensions(); - for (int i = 0; i < extensions.length; i++) { - m.setFrom(extensions[i]); + for (String extension : extensions) { + m.setFrom(extension); m.setTo("*.class"); final SourceFileScanner sfs = new SourceFileScanner(this); final File[] newFiles = sfs.restrictAsFiles(files, srcDir, destDir, m); @@ -1186,7 +1188,8 @@ public class Javac extends MatchingTask { final FileUtils fu = FileUtils.getFileUtils(); for (String pathElement : moduleSourcepath.list()) { boolean valid = false; - for (Map.Entry<String,Collection<File>> modules : resolveModuleSourcePathElement(getProject().getBaseDir(), pathElement).entrySet()) { + for (Map.Entry<String, Collection<File>> modules : resolveModuleSourcePathElement( + getProject().getBaseDir(), pathElement).entrySet()) { final String moduleName = modules.getKey(); for (File srcDir : modules.getValue()) { if (srcDir.exists()) { @@ -1218,7 +1221,7 @@ public class Javac extends MatchingTask { } if (extensions == null) { - extensions = new String[] {"java"}; + extensions = new String[] { "java" }; } // now process the extensions to ensure that they are the @@ -1297,8 +1300,8 @@ public class Javac extends MatchingTask { if (isJdkCompiler(compilerImpl)) { compilerImpl = EXTJAVAC; } else { - log("Since compiler setting isn't classic or modern, " - + "ignoring fork setting.", Project.MSG_WARN); + log("Since compiler setting isn't classic or modern, ignoring fork setting.", + Project.MSG_WARN); } } return compilerImpl; @@ -1353,13 +1356,12 @@ public class Javac extends MatchingTask { if (destDir != null && !destDir.isDirectory()) { throw new BuildException("destination directory \"" + destDir - + "\" does not exist " - + "or is not a directory", getLocation()); + + "\" does not exist or is not a directory", getLocation()); } if (includeAntRuntime == null && getProject().getProperty("build.sysclasspath") == null) { - log(getLocation() + "warning: 'includeantruntime' was not set, " + - "defaulting to build.sysclasspath=last; set to false for repeatable builds", - Project.MSG_WARN); + log(getLocation() + + "warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds", + Project.MSG_WARN); } } @@ -1377,9 +1379,8 @@ public class Javac extends MatchingTask { + (destDir != null ? " to " + destDir : "")); if (listFiles) { - for (int i = 0; i < compileList.length; i++) { - final String filename = compileList[i].getAbsolutePath(); - log(filename); + for (File element : compileList) { + log(element.getAbsolutePath()); } } @@ -1414,9 +1415,8 @@ public class Javac extends MatchingTask { } if (failOnError) { throw new BuildException(FAIL_MSG, getLocation()); - } else { - log(FAIL_MSG, Project.MSG_ERR); } + log(FAIL_MSG, Project.MSG_ERR); } } } @@ -1438,9 +1438,8 @@ public class Javac extends MatchingTask { } private void lookForPackageInfos(final File srcDir, final File[] newFiles) { - for (int i = 0; i < newFiles.length; i++) { - final File f = newFiles[i]; - if (!f.getName().equals("package-info.java")) { + for (File f : newFiles) { + if (!"package-info.java".equals(f.getName())) { continue; } final String path = FILE_UTILS.removeLeadingPath(srcDir, f). @@ -1451,7 +1450,7 @@ public class Javac extends MatchingTask { continue; } final String pkg = path.substring(0, path.length() - suffix.length()); - packageInfos.put(pkg, new Long(f.lastModified())); + packageInfos.put(pkg, Long.valueOf(f.lastModified())); } } @@ -1461,7 +1460,7 @@ public class Javac extends MatchingTask { * @see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=43114">Bug #43114</a> */ private void generateMissingPackageInfoClasses(final File dest) throws IOException { - for (final Entry<String, Long> entry : packageInfos.entrySet()) { + for (final Map.Entry<String, Long> entry : packageInfos.entrySet()) { final String pkg = entry.getKey(); final Long sourceLastMod = entry.getValue(); final File pkgBinDir = new File(dest, pkg.replace('/', File.separatorChar)); @@ -1490,7 +1489,7 @@ public class Javac extends MatchingTask { * @since 1.9.7 */ private static boolean hasPath(final Path path) { - return path != null && path.size() > 0; + return path != null && !path.isEmpty(); } /** @@ -1524,7 +1523,7 @@ public class Javac extends MatchingTask { */ private static Collection<? extends CharSequence> expandGroups( final CharSequence element) { - List<StringBuilder> result = new ArrayList<StringBuilder>(); + List<StringBuilder> result = new ArrayList<>(); result.add(new StringBuilder()); StringBuilder resolved = new StringBuilder(); for (int i = 0; i < element.length(); i++) { @@ -1547,7 +1546,7 @@ public class Javac extends MatchingTask { break; default: final List<StringBuilder> oldRes = result; - result = new ArrayList<StringBuilder>(oldRes.size() * parts.size()); + result = new ArrayList<>(oldRes.size() * parts.size()); for (CharSequence part : parts) { for (CharSequence prefix : oldRes) { result.add(new StringBuilder(prefix).append(resolved).append(part)); @@ -1574,7 +1573,7 @@ public class Javac extends MatchingTask { * @since 1.9.7 */ private static Collection<? extends CharSequence> resolveGroup(final CharSequence group) { - final Collection<CharSequence> result = new ArrayList<CharSequence>(); + final Collection<CharSequence> result = new ArrayList<>(); int start = 0; int depth = 0; for (int i = 0; i < group.length(); i++) { @@ -1643,26 +1642,26 @@ public class Javac extends MatchingTask { final int startIndex = pattern.indexOf(MODULE_MARKER); if (startIndex == -1) { findModules(root, pattern, null, collector); - } else { - if (startIndex == 0) { - throw new BuildException("The modulesourcepath entry must be a folder."); - } - final int endIndex = startIndex + MODULE_MARKER.length(); - if (pattern.charAt(startIndex - 1) != File.separatorChar) { - throw new BuildException("The module mark must be preceded by separator"); - } - if (endIndex < pattern.length() && pattern.charAt(endIndex) != File.separatorChar) { - throw new BuildException("The module mark must be followed by separator"); - } - if (pattern.indexOf(MODULE_MARKER, endIndex) != -1) { - throw new BuildException("The modulesourcepath entry must contain at most one module mark"); - } - final String pathToModule = pattern.substring(0, startIndex); - final String pathInModule = endIndex == pattern.length() ? - null : - pattern.substring(endIndex + 1); //+1 the separator - findModules(root, pathToModule, pathInModule, collector); + return; } + if (startIndex == 0) { + throw new BuildException("The modulesourcepath entry must be a folder."); + } + final int endIndex = startIndex + MODULE_MARKER.length(); + if (pattern.charAt(startIndex - 1) != File.separatorChar) { + throw new BuildException("The module mark must be preceded by separator"); + } + if (endIndex < pattern.length() && pattern.charAt(endIndex) != File.separatorChar) { + throw new BuildException("The module mark must be followed by separator"); + } + if (pattern.indexOf(MODULE_MARKER, endIndex) != -1) { + throw new BuildException("The modulesourcepath entry must contain at most one module mark"); + } + final String pathToModule = pattern.substring(0, startIndex); + final String pathInModule = endIndex == pattern.length() ? + null : + pattern.substring(endIndex + 1); //+1 the separator + findModules(root, pathToModule, pathInModule, collector); } /** @@ -1683,19 +1682,14 @@ public class Javac extends MatchingTask { if (!f.isDirectory()) { return; } - final File[] modules = f.listFiles(new FileFilter() { - public boolean accept(File pathname) { - return pathname.isDirectory(); - } - }); - for (File module : modules) { + for (File module : f.listFiles(File::isDirectory)) { final String moduleName = module.getName(); final File moduleSourceRoot = pathInModule == null ? module : new File(module, pathInModule); Collection<File> moduleRoots = collector.get(moduleName); if (moduleRoots == null) { - moduleRoots = new ArrayList<File>(); + moduleRoots = new ArrayList<>(); collector.put(moduleName, moduleRoots); } moduleRoots.add(moduleSourceRoot); http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Javadoc.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java index ccf1548..62366ad 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java +++ b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java @@ -23,22 +23,24 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; -import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Files; import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Locale; +import java.util.Set; import java.util.StringTokenizer; import java.util.Vector; +import java.util.stream.Collectors; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; @@ -225,7 +227,7 @@ public class Javadoc extends Task { public class DocletInfo extends ExtensionInfo { /** Collection of doclet parameters. */ - private final Vector<DocletParam> params = new Vector<DocletParam>(); + private final List<DocletParam> params = new Vector<>(); /** * Create a doclet parameter to be configured by Ant. @@ -234,8 +236,7 @@ public class Javadoc extends Task { */ public DocletParam createParam() { final DocletParam param = new DocletParam(); - params.addElement(param); - + params.add(param); return param; } @@ -245,7 +246,7 @@ public class Javadoc extends Task { * @return an Enumeration of DocletParam instances. */ public Enumeration<DocletParam> getParams() { - return params.elements(); + return Collections.enumeration(params); } } @@ -367,7 +368,7 @@ public class Javadoc extends Task { public String[] getValues() { // Protected first so if any GUI tool offers a default // based on enum #0, it will be right. - return new String[] {"protected", "public", "package", "private"}; + return new String[] { "protected", "public", "package", "private" }; } } @@ -378,8 +379,11 @@ public class Javadoc extends Task { * contains special handling for FileSets that has to occur at * task runtime.</p> */ - public class ResourceCollectionContainer { - private final ArrayList<ResourceCollection> rcs = new ArrayList<ResourceCollection>(); + public class ResourceCollectionContainer + implements Iterable<ResourceCollection> { + + private final List<ResourceCollection> rcs = new ArrayList<>(); + /** * Add a resource collection to the container. * @param rc the collection to add. @@ -392,7 +396,8 @@ public class Javadoc extends Task { * Get an iterator on the collection. * @return an iterator. */ - private Iterator<ResourceCollection> iterator() { + @Override + public Iterator<ResourceCollection> iterator() { return rcs.iterator(); } } @@ -422,12 +427,12 @@ public class Javadoc extends Task { * @param value the argument value. */ private void addArgIfNotEmpty(final String key, final String value) { - if (value != null && value.length() != 0) { - cmd.createArgument().setValue(key); - cmd.createArgument().setValue(value); - } else { + if (value == null || value.isEmpty()) { log("Warning: Leaving out empty argument '" + key + "'", Project.MSG_WARN); + } else { + cmd.createArgument().setValue(key); + cmd.createArgument().setValue(value); } } @@ -443,9 +448,9 @@ public class Javadoc extends Task { private boolean failOnWarning = false; private Path sourcePath = null; private File destDir = null; - private final Vector<SourceFile> sourceFiles = new Vector<SourceFile>(); - private final Vector<PackageName> packageNames = new Vector<PackageName>(); - private final Vector<PackageName> excludePackageNames = new Vector<PackageName>(1); + private final List<SourceFile> sourceFiles = new Vector<>(); + private final List<PackageName> packageNames = new Vector<>(); + private final List<PackageName> excludePackageNames = new Vector<>(1); private boolean author = true; private boolean version = true; private DocletInfo doclet = null; @@ -453,9 +458,9 @@ public class Javadoc extends Task { private Path bootclasspath = null; private String group = null; private String packageList = null; - private final Vector<LinkArgument> links = new Vector<LinkArgument>(); - private final Vector<GroupArgument> groups = new Vector<GroupArgument>(); - private final Vector<Object> tags = new Vector<Object>(); + private final List<LinkArgument> links = new Vector<>(); + private final List<GroupArgument> groups = new Vector<>(); + private final List<Object> tags = new Vector<>(); private boolean useDefaultExcludes = true; private Html doctitle = null; private Html header = null; @@ -475,7 +480,7 @@ public class Javadoc extends Task { private final ResourceCollectionContainer nestedSourceFiles = new ResourceCollectionContainer(); - private final Vector<DirSet> packageSets = new Vector<DirSet>(); + private final List<DirSet> packageSets = new Vector<>(); /** * Work around command line length limit by using an external file @@ -593,7 +598,7 @@ public class Javadoc extends Task { * @param sf the source file to be processed. */ public void addSource(final SourceFile sf) { - sourceFiles.addElement(sf); + sourceFiles.add(sf); } /** @@ -623,7 +628,7 @@ public class Javadoc extends Task { * @param pn the package name, possibly wildcarded. */ public void addPackage(final PackageName pn) { - packageNames.addElement(pn); + packageNames.add(pn); } /** @@ -648,7 +653,7 @@ public class Javadoc extends Task { * @param pn the name of the package (wildcards are not permitted). */ public void addExcludePackage(final PackageName pn) { - excludePackageNames.addElement(pn); + excludePackageNames.add(pn); } /** @@ -772,7 +777,7 @@ public class Javadoc extends Task { * @param tagletInfo information about the taglet. */ public void addTaglet(final ExtensionInfo tagletInfo) { - tags.addElement(tagletInfo); + tags.add(tagletInfo); } /** @@ -1191,7 +1196,7 @@ public class Javadoc extends Task { */ public LinkArgument createLink() { final LinkArgument la = new LinkArgument(); - links.addElement(la); + links.add(la); return la; } @@ -1304,7 +1309,7 @@ public class Javadoc extends Task { */ public TagArgument createTag() { final TagArgument ta = new TagArgument(); - tags.addElement (ta); + tags.add(ta); return ta; } @@ -1377,48 +1382,47 @@ public class Javadoc extends Task { final StringTokenizer tok = new StringTokenizer (verboseScope, ","); while (tok.hasMoreTokens()) { final String next = tok.nextToken().trim(); - if (next.equals("all")) { + if ("all".equals(next)) { if (gotAll) { - getProject().log ("Repeated tag scope element: all", + getProject().log("Repeated tag scope element: all", Project.MSG_VERBOSE); } gotAll = true; } else { int i; for (i = 0; i < SCOPE_ELEMENTS.length; i++) { - if (next.equals (SCOPE_ELEMENTS[i])) { + if (SCOPE_ELEMENTS[i].equals(next)) { break; } } if (i == SCOPE_ELEMENTS.length) { - throw new BuildException ("Unrecognised scope element: " - + next); - } else { - if (elements[i]) { - getProject().log ("Repeated tag scope element: " - + next, Project.MSG_VERBOSE); - } - elements[i] = true; - gotNotAll = true; + throw new BuildException( + "Unrecognised scope element: %s", next); + } + if (elements[i]) { + getProject().log("Repeated tag scope element: " + next, + Project.MSG_VERBOSE); } + elements[i] = true; + gotNotAll = true; } } if (gotNotAll && gotAll) { - throw new BuildException ("Mixture of \"all\" and other scope " - + "elements in tag parameter."); + throw new BuildException( + "Mixture of \"all\" and other scope elements in tag parameter."); } if (!gotNotAll && !gotAll) { - throw new BuildException ("No scope elements specified in tag " - + "parameter."); + throw new BuildException( + "No scope elements specified in tag parameter."); } if (gotAll) { this.scope = "a"; } else { - final StringBuffer buff = new StringBuffer (elements.length); + final StringBuilder buff = new StringBuilder(elements.length); for (int i = 0; i < elements.length; i++) { if (elements[i]) { - buff.append (SCOPE_ELEMENTS[i].charAt(0)); + buff.append(SCOPE_ELEMENTS[i].charAt(0)); } } this.scope = buff.toString(); @@ -1441,17 +1445,17 @@ public class Javadoc extends Task { * is <code>null</code> or empty. */ public String getParameter() throws BuildException { - if (name == null || name.equals("")) { - throw new BuildException ("No name specified for custom tag."); + if (name == null || name.isEmpty()) { + throw new BuildException("No name specified for custom tag."); } if (getDescription() != null) { return name + ":" + (enabled ? "" : "X") + scope + ":" + getDescription(); - } else if (!enabled || !"a".equals(scope)) { + } + if (!enabled || !"a".equals(scope)) { return name + ":" + (enabled ? "" : "X") + scope; - } else { - return name; } + return name; } } @@ -1462,22 +1466,16 @@ public class Javadoc extends Task { */ public GroupArgument createGroup() { final GroupArgument ga = new GroupArgument(); - groups.addElement(ga); + groups.add(ga); return ga; } - /** * A class corresponding to the group nested element. */ public class GroupArgument { private Html title; - private final Vector<PackageName> packages = new Vector<PackageName>(); - - /** Constructor for GroupArgument */ - public GroupArgument() { - //empty - } + private final List<PackageName> packages = new Vector<>(); /** * Set the title attribute using a string. @@ -1488,6 +1486,7 @@ public class Javadoc extends Task { h.addText(src); addTitle(h); } + /** * Set the title attribute using a nested Html value. * @param text a <code>Html</code> value @@ -1517,12 +1516,13 @@ public class Javadoc extends Task { addPackage(pn); } } + /** * Add a package nested element. * @param pn a nested element specifying the package. */ public void addPackage(final PackageName pn) { - packages.addElement(pn); + packages.add(pn); } /** @@ -1530,15 +1530,8 @@ public class Javadoc extends Task { * @return the packages as a string */ public String getPackages() { - final StringBuffer p = new StringBuffer(); - final int size = packages.size(); - for (int i = 0; i < size; i++) { - if (i > 0) { - p.append(":"); - } - p.append(packages.elementAt(i).toString()); - } - return p.toString(); + return packages.stream().map(Object::toString) + .collect(Collectors.joining(":")); } } @@ -1602,7 +1595,7 @@ public class Javadoc extends Task { * @since 1.5 */ public void addPackageset(final DirSet packageSet) { - packageSets.addElement(packageSet); + packageSets.add(packageSet); } /** @@ -1705,7 +1698,7 @@ public class Javadoc extends Task { public void execute() throws BuildException { checkTaskName(); - final Vector<String> packagesToDoc = new Vector<String>(); + final List<String> packagesToDoc = new Vector<>(); final Path sourceDirs = new Path(getProject()); checkPackageAndSourcePath(); @@ -1717,15 +1710,14 @@ public class Javadoc extends Task { parsePackages(packagesToDoc, sourceDirs); checkPackages(packagesToDoc, sourceDirs); - @SuppressWarnings("unchecked") - final Vector<SourceFile> sourceFilesToDoc = (Vector<SourceFile>) sourceFiles.clone(); + final List<SourceFile> sourceFilesToDoc = new ArrayList<>(sourceFiles); addSourceFiles(sourceFilesToDoc); checkPackagesToDoc(packagesToDoc, sourceFilesToDoc); log("Generating Javadoc", Project.MSG_INFO); - final Commandline toExecute = (Commandline) cmd.clone(); + final Commandline toExecute = cmd.clone(); if (executable != null) { toExecute.setExecutable(executable); } else { @@ -1846,25 +1838,24 @@ public class Javadoc extends Task { } } - private void checkPackages(final Vector<String> packagesToDoc, final Path sourceDirs) { - if (packagesToDoc.size() != 0 && sourceDirs.size() == 0) { - final String msg = "sourcePath attribute must be set when " - + "specifying package names."; - throw new BuildException(msg); + private void checkPackages(final List<String> packagesToDoc, final Path sourceDirs) { + if (!packagesToDoc.isEmpty() && sourceDirs.isEmpty()) { + throw new BuildException( + "sourcePath attribute must be set when specifying package names."); } } private void checkPackagesToDoc( - final Vector<String> packagesToDoc, final Vector<SourceFile> sourceFilesToDoc) { - if (packageList == null && packagesToDoc.size() == 0 - && sourceFilesToDoc.size() == 0) { - throw new BuildException("No source files and no packages have " - + "been specified."); + final List<String> packagesToDoc, final List<SourceFile> sourceFilesToDoc) { + if (packageList == null && packagesToDoc.isEmpty() + && sourceFilesToDoc.isEmpty()) { + throw new BuildException( + "No source files and no packages have been specified."); } } private void doSourcePath(final Commandline toExecute, final Path sourceDirs) { - if (sourceDirs.size() > 0) { + if (!sourceDirs.isEmpty()) { toExecute.createArgument().setValue("-sourcepath"); toExecute.createArgument().setPath(sourceDirs); } @@ -1889,7 +1880,7 @@ public class Javadoc extends Task { } if (classpath == null) { - classpath = (new Path(getProject())).concatSystemClasspath("last"); + classpath = new Path(getProject()).concatSystemClasspath("last"); } else { classpath = classpath.concatSystemClasspath("ignore"); } @@ -1914,32 +1905,31 @@ public class Javadoc extends Task { private void doDoclet(final Commandline toExecute) { if (doclet != null) { if (doclet.getName() == null) { - throw new BuildException("The doclet name must be " - + "specified.", getLocation()); - } else { - toExecute.createArgument().setValue("-doclet"); - toExecute.createArgument().setValue(doclet.getName()); - if (doclet.getPath() != null) { - final Path docletPath - = doclet.getPath().concatSystemClasspath("ignore"); - if (docletPath.size() != 0) { - toExecute.createArgument().setValue("-docletpath"); - toExecute.createArgument().setPath(docletPath); - } + throw new BuildException("The doclet name must be specified.", + getLocation()); + } + toExecute.createArgument().setValue("-doclet"); + toExecute.createArgument().setValue(doclet.getName()); + if (doclet.getPath() != null) { + final Path docletPath + = doclet.getPath().concatSystemClasspath("ignore"); + if (docletPath.size() != 0) { + toExecute.createArgument().setValue("-docletpath"); + toExecute.createArgument().setPath(docletPath); + } + } + for (final Enumeration<DocletParam> e = doclet.getParams(); + e.hasMoreElements();) { + final DocletParam param = e.nextElement(); + if (param.getName() == null) { + throw new BuildException( + "Doclet parameters must have a name"); } - for (final Enumeration<DocletParam> e = doclet.getParams(); - e.hasMoreElements();) { - final DocletParam param = e.nextElement(); - if (param.getName() == null) { - throw new BuildException("Doclet parameters must " - + "have a name"); - } - toExecute.createArgument().setValue(param.getName()); - if (param.getValue() != null) { - toExecute.createArgument() - .setValue(param.getValue()); - } + toExecute.createArgument().setValue(param.getName()); + if (param.getValue() != null) { + toExecute.createArgument() + .setValue(param.getValue()); } } } @@ -1948,7 +1938,6 @@ public class Javadoc extends Task { private void writeExternalArgs(final Commandline toExecute) { // If using an external file, write the command line options to it File optionsTmpFile = null; - BufferedWriter optionsListWriter = null; try { optionsTmpFile = FILE_UTILS.createTempFile( "javadocOptions", "", null, true, true); @@ -1956,23 +1945,20 @@ public class Javadoc extends Task { toExecute.clearArgs(); toExecute.createArgument().setValue( "@" + optionsTmpFile.getAbsolutePath()); - optionsListWriter = new BufferedWriter( - new FileWriter(optionsTmpFile.getAbsolutePath(), true)); - for (int i = 0; i < listOpt.length; i++) { - final String string = listOpt[i]; - if (string.startsWith("-J-")) { - toExecute.createArgument().setValue(string); - } else { - if (string.startsWith("-")) { - optionsListWriter.write(string); + try (BufferedWriter optionsListWriter = new BufferedWriter( + new FileWriter(optionsTmpFile.getAbsolutePath(), true))) { + for (final String opt : listOpt) { + if (opt.startsWith("-J-")) { + toExecute.createArgument().setValue(opt); + } else if (opt.startsWith("-")) { + optionsListWriter.write(opt); optionsListWriter.write(" "); } else { - optionsListWriter.write(quoteString(string)); + optionsListWriter.write(quoteString(opt)); optionsListWriter.newLine(); } } } - optionsListWriter.close(); } catch (final IOException ex) { if (optionsTmpFile != null) { optionsTmpFile.delete(); @@ -1980,8 +1966,6 @@ public class Javadoc extends Task { throw new BuildException( "Error creating or writing temporary file for javadoc options", ex, getLocation()); - } finally { - FileUtils.close(optionsListWriter); } } @@ -1998,85 +1982,78 @@ public class Javadoc extends Task { } private void doLinks(final Commandline toExecute) { - if (links.size() != 0) { - for (final Enumeration<LinkArgument> e = links.elements(); e.hasMoreElements();) { - final LinkArgument la = e.nextElement(); - - if (la.getHref() == null || la.getHref().length() == 0) { - log("No href was given for the link - skipping", - Project.MSG_VERBOSE); + for (final LinkArgument la : links) { + if (la.getHref() == null || la.getHref().isEmpty()) { + log("No href was given for the link - skipping", + Project.MSG_VERBOSE); + continue; + } + String link = null; + if (la.shouldResolveLink()) { + final File hrefAsFile = + getProject().resolveFile(la.getHref()); + if (hrefAsFile.exists()) { + try { + link = FILE_UTILS.getFileURL(hrefAsFile) + .toExternalForm(); + } catch (final MalformedURLException ex) { + // should be impossible + log("Warning: link location was invalid " + + hrefAsFile, Project.MSG_WARN); + } + } + } + if (link == null) { + // is the href a valid URL + try { + final URL base = new URL("file://."); + // created for the side effect of throwing a MalformedURLException + new URL(base, la.getHref()); //NOSONAR + link = la.getHref(); + } catch (final MalformedURLException mue) { + // ok - just skip + log("Link href \"" + la.getHref() + + "\" is not a valid url - skipping link", + Project.MSG_WARN); continue; } - String link = null; - if (la.shouldResolveLink()) { - final File hrefAsFile = - getProject().resolveFile(la.getHref()); - if (hrefAsFile.exists()) { + } + + if (la.isLinkOffline()) { + final File packageListLocation = la.getPackagelistLoc(); + URL packageListURL = la.getPackagelistURL(); + if (packageListLocation == null + && packageListURL == null) { + throw new BuildException( + "The package list location for link " + la.getHref() + + " must be provided because the link is offline"); + } + if (packageListLocation != null) { + final File packageListFile = + new File(packageListLocation, "package-list"); + if (packageListFile.exists()) { try { - link = FILE_UTILS.getFileURL(hrefAsFile) - .toExternalForm(); + packageListURL = + FILE_UTILS.getFileURL(packageListLocation); } catch (final MalformedURLException ex) { - // should be impossible - log("Warning: link location was invalid " - + hrefAsFile, Project.MSG_WARN); + log("Warning: Package list location was " + + "invalid " + packageListLocation, + Project.MSG_WARN); } + } else { + log("Warning: No package list was found at " + + packageListLocation, Project.MSG_VERBOSE); } } - if (link == null) { - // is the href a valid URL - try { - final URL base = new URL("file://."); - // created for the side effect of throwing a MalformedURLException - new URL(base, la.getHref()); //NOSONAR - link = la.getHref(); - } catch (final MalformedURLException mue) { - // ok - just skip - log("Link href \"" + la.getHref() - + "\" is not a valid url - skipping link", - Project.MSG_WARN); - continue; - } - } - - if (la.isLinkOffline()) { - final File packageListLocation = la.getPackagelistLoc(); - URL packageListURL = la.getPackagelistURL(); - if (packageListLocation == null - && packageListURL == null) { - throw new BuildException("The package list" - + " location for link " - + la.getHref() - + " must be provided " - + "because the link is " - + "offline"); - } - if (packageListLocation != null) { - final File packageListFile = - new File(packageListLocation, "package-list"); - if (packageListFile.exists()) { - try { - packageListURL = - FILE_UTILS.getFileURL(packageListLocation); - } catch (final MalformedURLException ex) { - log("Warning: Package list location was " - + "invalid " + packageListLocation, - Project.MSG_WARN); - } - } else { - log("Warning: No package list was found at " - + packageListLocation, Project.MSG_VERBOSE); - } - } - if (packageListURL != null) { - toExecute.createArgument().setValue("-linkoffline"); - toExecute.createArgument().setValue(link); - toExecute.createArgument() - .setValue(packageListURL.toExternalForm()); - } - } else { - toExecute.createArgument().setValue("-link"); + if (packageListURL != null) { + toExecute.createArgument().setValue("-linkoffline"); toExecute.createArgument().setValue(link); + toExecute.createArgument() + .setValue(packageListURL.toExternalForm()); } + } else { + toExecute.createArgument().setValue("-link"); + toExecute.createArgument().setValue(link); } } } @@ -2098,7 +2075,7 @@ public class Javadoc extends Task { final StringTokenizer tok = new StringTokenizer(group, ",", false); while (tok.hasMoreTokens()) { final String grp = tok.nextToken().trim(); - final int space = grp.indexOf(" "); + final int space = grp.indexOf(' '); if (space > 0) { final String name = grp.substring(0, space); final String pkgList = grp.substring(space + 1); @@ -2112,36 +2089,30 @@ public class Javadoc extends Task { // add the group arguments private void doGroups(final Commandline toExecute) { - if (groups.size() != 0) { - for (final Enumeration<GroupArgument> e = groups.elements(); e.hasMoreElements();) { - final GroupArgument ga = e.nextElement(); - final String title = ga.getTitle(); - final String packages = ga.getPackages(); - if (title == null || packages == null) { - throw new BuildException("The title and packages must " - + "be specified for group " - + "elements."); - } - toExecute.createArgument().setValue("-group"); - toExecute.createArgument().setValue(expand(title)); - toExecute.createArgument().setValue(packages); + for (final GroupArgument ga : groups) { + final String title = ga.getTitle(); + final String packages = ga.getPackages(); + if (title == null || packages == null) { + throw new BuildException( + "The title and packages must be specified for group elements."); } + toExecute.createArgument().setValue("-group"); + toExecute.createArgument().setValue(expand(title)); + toExecute.createArgument().setValue(packages); } } // Do java1.4 arguments private void doJava14(final Commandline toExecute) { - for (final Enumeration<Object> e = tags.elements(); e.hasMoreElements();) { - final Object element = e.nextElement(); + for (final Object element : tags) { if (element instanceof TagArgument) { final TagArgument ta = (TagArgument) element; final File tagDir = ta.getDir(getProject()); if (tagDir == null) { // The tag element is not used as a fileset, // but specifies the tag directly. - toExecute.createArgument().setValue ("-tag"); - toExecute.createArgument() - .setValue (ta.getParameter()); + toExecute.createArgument().setValue("-tag"); + toExecute.createArgument().setValue(ta.getParameter()); } else { // The tag element is used as a // fileset. Parse all the files and create @@ -2149,26 +2120,22 @@ public class Javadoc extends Task { final DirectoryScanner tagDefScanner = ta.getDirectoryScanner(getProject()); final String[] files = tagDefScanner.getIncludedFiles(); - for (int i = 0; i < files.length; i++) { - final File tagDefFile = new File(tagDir, files[i]); - try { - final BufferedReader in - = new BufferedReader( - new FileReader(tagDefFile) - ); - String line = null; + for (String file : files) { + final File tagDefFile = new File(tagDir, file); + try (final BufferedReader in = + new BufferedReader(new FileReader(tagDefFile))) { + String line; while ((line = in.readLine()) != null) { toExecute.createArgument() .setValue("-tag"); toExecute.createArgument() .setValue(line); } - in.close(); } catch (final IOException ioe) { throw new BuildException( - "Couldn't read " - + " tag file from " - + tagDefFile.getAbsolutePath(), ioe); + "Couldn't read tag file from " + + tagDefFile.getAbsolutePath(), + ioe); } } } @@ -2180,7 +2147,7 @@ public class Javadoc extends Task { if (tagletInfo.getPath() != null) { final Path tagletPath = tagletInfo.getPath() .concatSystemClasspath("ignore"); - if (tagletPath.size() != 0) { + if (!tagletPath.isEmpty()) { toExecute.createArgument() .setValue("-tagletpath"); toExecute.createArgument().setPath(tagletPath); @@ -2208,8 +2175,8 @@ public class Javadoc extends Task { private void doDocFilesSubDirs(final Commandline toExecute) { if (docFilesSubDirs) { toExecute.createArgument().setValue("-docfilessubdirs"); - if (excludeDocFilesSubDir != null - && excludeDocFilesSubDir.trim().length() > 0) { + if (!(excludeDocFilesSubDir == null + || excludeDocFilesSubDir.trim().isEmpty())) { toExecute.createArgument().setValue("-excludedocfilessubdir"); toExecute.createArgument().setValue(excludeDocFilesSubDir); } @@ -2218,10 +2185,10 @@ public class Javadoc extends Task { private void doSourceAndPackageNames( final Commandline toExecute, - final Vector<String> packagesToDoc, - final Vector<SourceFile> sourceFilesToDoc, + final List<String> packagesToDoc, + final List<SourceFile> sourceFilesToDoc, final boolean useExternalFile, - final File tmpList, + final File tmpList, final BufferedWriter srcListWriter) throws IOException { for (final String packageName : packagesToDoc) { @@ -2238,7 +2205,7 @@ public class Javadoc extends Task { if (useExternalFile) { // TODO what is the following doing? // should it run if !javadoc4 && executable != null? - if (sourceFileName.indexOf(" ") > -1) { + if (sourceFileName.indexOf(' ') > -1) { String name = sourceFileName; if (File.separatorChar == '\\') { name = sourceFileName.replace(File.separatorChar, '/'); @@ -2268,9 +2235,8 @@ public class Javadoc extends Task { } if (str.indexOf('\'') == -1) { return quoteString(str, '\''); - } else { - return quoteString(str, '"'); } + return quoteString(str, '"'); } private boolean containsWhitespace(final String s) { @@ -2284,7 +2250,7 @@ public class Javadoc extends Task { } private String quoteString(final String str, final char delim) { - final StringBuffer buf = new StringBuffer(str.length() * 2); + final StringBuilder buf = new StringBuilder(str.length() * 2); buf.append(delim); final int len = str.length(); boolean lastCharWasCR = false; @@ -2332,18 +2298,16 @@ public class Javadoc extends Task { * * @since 1.7 */ - private void addSourceFiles(final Vector<SourceFile> sf) { - final Iterator<ResourceCollection> e = nestedSourceFiles.iterator(); - while (e.hasNext()) { - ResourceCollection rc = e.next(); + private void addSourceFiles(final List<SourceFile> sf) { + for (ResourceCollection rc : nestedSourceFiles) { if (!rc.isFilesystemOnly()) { - throw new BuildException("only file system based resources are" - + " supported by javadoc"); + throw new BuildException( + "only file system based resources are supported by javadoc"); } if (rc instanceof FileSet) { final FileSet fs = (FileSet) rc; if (!fs.hasPatterns() && !fs.hasSelectors()) { - final FileSet fs2 = (FileSet) fs.clone(); + final FileSet fs2 = fs.clone(); fs2.createInclude().setName("**/*.java"); if (includeNoSourcePackages) { fs2.createInclude().setName("**/package.html"); @@ -2352,7 +2316,7 @@ public class Javadoc extends Task { } } for (final Resource r : rc) { - sf.addElement(new SourceFile(r.as(FileProvider.class).getFile())); + sf.add(new SourceFile(r.as(FileProvider.class).getFile())); } } } @@ -2365,10 +2329,9 @@ public class Javadoc extends Task { * * @since 1.5 */ - private void parsePackages(final Vector<String> pn, final Path sp) { - final HashSet<String> addedPackages = new HashSet<String>(); - @SuppressWarnings("unchecked") - final Vector<DirSet> dirSets = (Vector<DirSet>) packageSets.clone(); + private void parsePackages(final List<String> pn, final Path sp) { + final Set<String> addedPackages = new HashSet<>(); + final List<DirSet> dirSets = new ArrayList<>(packageSets); // for each sourcePath entry, add a directoryset with includes // taken from packagenames attribute and nested package @@ -2377,51 +2340,35 @@ public class Javadoc extends Task { if (sourcePath != null) { final PatternSet ps = new PatternSet(); ps.setProject(getProject()); - if (packageNames.size() > 0) { - final Enumeration<PackageName> e = packageNames.elements(); - while (e.hasMoreElements()) { - final PackageName p = e.nextElement(); - String pkg = p.getName().replace('.', '/'); - if (pkg.endsWith("*")) { - pkg += "*"; - } - ps.createInclude().setName(pkg); - } - } else { + if (packageNames.isEmpty()) { ps.createInclude().setName("**"); + } else { + packageNames.stream().map(PackageName::getName) + .map(s -> s.replace('.', '/').replaceFirst("\\*$", "**")) + .forEach(pkg -> ps.createInclude().setName(pkg)); } - final Enumeration<PackageName> e = excludePackageNames.elements(); - while (e.hasMoreElements()) { - final PackageName p = e.nextElement(); - String pkg = p.getName().replace('.', '/'); - if (pkg.endsWith("*")) { - pkg += "*"; - } - ps.createExclude().setName(pkg); - } - + excludePackageNames.stream().map(PackageName::getName) + .map(s -> s.replace('.', '/').replaceFirst("\\*$", "**")) + .forEach(pkg -> ps.createExclude().setName(pkg)); - final String[] pathElements = sourcePath.list(); - for (int i = 0; i < pathElements.length; i++) { - final File dir = new File(pathElements[i]); + for (String pathElement : sourcePath.list()) { + final File dir = new File(pathElement); if (dir.isDirectory()) { final DirSet ds = new DirSet(); ds.setProject(getProject()); ds.setDefaultexcludes(useDefaultExcludes); ds.setDir(dir); ds.createPatternSet().addConfiguredPatternset(ps); - dirSets.addElement(ds); + dirSets.add(ds); } else { - log("Skipping " + pathElements[i] + log("Skipping " + pathElement + " since it is no directory.", Project.MSG_WARN); } } } - final Enumeration<DirSet> e = dirSets.elements(); - while (e.hasMoreElements()) { - final DirSet ds = e.nextElement(); + for (DirSet ds : dirSets) { final File baseDir = ds.getDir(getProject()); log("scanning " + baseDir + " for packages.", Project.MSG_DEBUG); final DirectoryScanner dsc = ds.getDirectoryScanner(getProject()); @@ -2430,20 +2377,14 @@ public class Javadoc extends Task { for (int i = 0; i < dirs.length; i++) { // are there any java files in this directory? final File pd = new File(baseDir, dirs[i]); - final String[] files = pd.list(new FilenameFilter () { - public boolean accept(final File dir1, final String name) { - return name.endsWith(".java") - || (includeNoSourcePackages - && name.equals("package.html")); - } - }); + final String[] files = pd.list((dir1, + name) -> name.endsWith(".java") || (includeNoSourcePackages + && name.equals("package.html"))); if (files.length > 0) { if ("".equals(dirs[i])) { log(baseDir - + " contains source files in the default package," - + " you must specify them as source files" - + " not packages.", + + " contains source files in the default package, you must specify them as source files not packages.", Project.MSG_WARN); } else { containsPackages = true; @@ -2451,7 +2392,7 @@ public class Javadoc extends Task { dirs[i].replace(File.separatorChar, '.'); if (!addedPackages.contains(packageName)) { addedPackages.add(packageName); - pn.addElement(packageName); + pn.add(packageName); } } } @@ -2476,14 +2417,13 @@ public class Javadoc extends Task { Project.MSG_VERBOSE); return; } - final String fixData; final InputStream in = Javadoc.class .getResourceAsStream("javadoc-frame-injections-fix.txt"); if (in == null) { - throw new FileNotFoundException("Missing resource " - + "'javadoc-frame-injections-fix.txt' in " - + "classpath."); + throw new FileNotFoundException( + "Missing resource 'javadoc-frame-injections-fix.txt' in classpath."); } + final String fixData; try { fixData = fixLineFeeds(FileUtils @@ -2516,14 +2456,10 @@ public class Javadoc extends Task { : FILE_UTILS.getDefaultEncoding(); // we load the whole file as one String (toc/index files are // generally small, because they only contain frameset declaration): - final InputStream fin = Files.newInputStream(file.toPath()); String fileContents; - try { - fileContents = - fixLineFeeds(FileUtils - .safeReadFully(new InputStreamReader(fin, enc))); - } finally { - FileUtils.close(fin); + try (InputStreamReader reader = + new InputStreamReader(Files.newInputStream(file.toPath()), enc)) { + fileContents = fixLineFeeds(FileUtils.safeReadFully(reader)); } // check if file may be vulnerable because it was not @@ -2532,14 +2468,11 @@ public class Javadoc extends Task { // we need to patch the file! final String patchedFileContents = patchContent(fileContents, fixData); if (!patchedFileContents.equals(fileContents)) { - final OutputStream fos = Files.newOutputStream(file.toPath()); - try { - final OutputStreamWriter w = new OutputStreamWriter(fos, enc); + try (final OutputStreamWriter w = + new OutputStreamWriter(Files.newOutputStream(file.toPath()), enc)) { w.write(patchedFileContents); w.close(); return 1; - } finally { - FileUtils.close(fos); } } } @@ -2598,7 +2531,6 @@ public class Javadoc extends Task { } } - protected void logFlush() { if (queuedLine != null) { super.processLine(queuedLine, Project.MSG_VERBOSE); http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Length.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/Length.java b/src/main/org/apache/tools/ant/taskdefs/Length.java index 68fb20a..e776b59 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Length.java +++ b/src/main/org/apache/tools/ant/taskdefs/Length.java @@ -108,7 +108,7 @@ public class Length extends Task implements Condition { * @param ell the long length to compare with. */ public synchronized void setLength(long ell) { - length = new Long(ell); + length = Long.valueOf(ell); } /** @@ -152,7 +152,7 @@ public class Length extends Task implements Condition { * @param trim <code>boolean</code>. */ public synchronized void setTrim(boolean trim) { - this.trim = trim ? Boolean.TRUE : Boolean.FALSE; + this.trim = Boolean.valueOf(trim); } /** @@ -160,25 +160,31 @@ public class Length extends Task implements Condition { * @return boolean trim setting. */ public boolean getTrim() { - return trim != null && trim.booleanValue(); + return Boolean.TRUE.equals(trim); } /** * Execute the length task. */ + @Override public void execute() { validate(); - PrintStream ps = new PrintStream((property != null) - ? (OutputStream) new PropertyOutputStream(getProject(), property) - : (OutputStream) new LogOutputStream(this, Project.MSG_INFO)); + OutputStream out = + property == null ? new LogOutputStream(this, Project.MSG_INFO) + : new PropertyOutputStream(getProject(), property); + PrintStream ps = new PrintStream(out); - if (STRING.equals(mode)) { + switch (mode) { + case STRING: ps.print(getLength(string, getTrim())); ps.close(); - } else if (EACH.equals(mode)) { + break; + case EACH: handleResources(new EachHandler(ps)); - } else if (ALL.equals(mode)) { + break; + case ALL: handleResources(new AllHandler(ps)); + break; } } @@ -187,6 +193,7 @@ public class Length extends Task implements Condition { * @return true if the condition is true. * @throws BuildException if an error occurs. */ + @Override public boolean eval() { validate(); if (length == null) { @@ -194,11 +201,11 @@ public class Length extends Task implements Condition { } Long ell; if (STRING.equals(mode)) { - ell = new Long(getLength(string, getTrim())); + ell = Long.valueOf(getLength(string, getTrim())); } else { AccumHandler h = new AccumHandler(); handleResources(h); - ell = new Long(h.getAccum()); + ell = Long.valueOf(h.getAccum()); } return when.evaluate(ell.compareTo(length)); } @@ -206,25 +213,26 @@ public class Length extends Task implements Condition { private void validate() { if (string != null) { if (resources != null) { - throw new BuildException("the string length function" - + " is incompatible with the file/resource length function"); + throw new BuildException( + "the string length function is incompatible with the file/resource length function"); } if (!(STRING.equals(mode))) { - throw new BuildException("the mode attribute is for use" - + " with the file/resource length function"); + throw new BuildException( + "the mode attribute is for use with the file/resource length function"); } } else if (resources != null) { if (!(EACH.equals(mode) || ALL.equals(mode))) { - throw new BuildException("invalid mode setting for" - + " file/resource length function: \"" + mode + "\""); - } else if (trim != null) { - throw new BuildException("the trim attribute is" - + " for use with the string length function only"); + throw new BuildException( + "invalid mode setting for file/resource length function: \"" + + mode + "\""); + } + if (trim != null) { + throw new BuildException( + "the trim attribute is for use with the string length function only"); } } else { - throw new BuildException("you must set either the string attribute" - + " or specify one or more files using the file attribute or" - + " nested resource collections"); + throw new BuildException( + "you must set either the string attribute or specify one or more files using the file attribute or nested resource collections"); } } @@ -247,12 +255,13 @@ public class Length extends Task implements Condition { /** EnumeratedAttribute operation mode */ public static class FileMode extends EnumeratedAttribute { - static final String[] MODES = new String[] {EACH, ALL}; //NOSONAR + static final String[] MODES = new String[] { EACH, ALL }; //NOSONAR /** * Return the possible values for FileMode. * @return <code>String[]</code>. */ + @Override public String[] getValues() { return MODES; } @@ -268,6 +277,7 @@ public class Length extends Task implements Condition { private abstract class Handler { private PrintStream ps; + Handler(PrintStream ps) { this.ps = ps; } @@ -287,6 +297,8 @@ public class Length extends Task implements Condition { EachHandler(PrintStream ps) { super(ps); } + + @Override protected void handle(Resource r) { getPs().print(r.toString()); getPs().print(" : "); @@ -306,12 +318,16 @@ public class Length extends Task implements Condition { AccumHandler() { super(null); } + protected AccumHandler(PrintStream ps) { super(ps); } + protected long getAccum() { return accum; } + + @Override protected synchronized void handle(Resource r) { long size = r.getSize(); if (size == Resource.UNKNOWN_SIZE) { @@ -326,6 +342,8 @@ public class Length extends Task implements Condition { AllHandler(PrintStream ps) { super(ps); } + + @Override void complete() { getPs().print(getAccum()); super.complete(); http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java b/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java index 4c20c7c..9ff4e6e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java +++ b/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java @@ -17,12 +17,12 @@ */ package org.apache.tools.ant.taskdefs; -import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -import java.io.Reader; +import java.nio.charset.Charset; +import java.util.List; import java.util.Properties; import java.util.Vector; @@ -30,6 +30,7 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.filters.util.ChainReaderHelper; +import org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader; import org.apache.tools.ant.types.FilterChain; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; @@ -37,7 +38,6 @@ import org.apache.tools.ant.types.Resource; import org.apache.tools.ant.types.ResourceCollection; import org.apache.tools.ant.types.resources.FileResource; import org.apache.tools.ant.types.resources.JavaResource; -import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.util.ResourceUtils; /** @@ -56,7 +56,7 @@ public class LoadProperties extends Task { /** * Holds filterchains */ - private final Vector<FilterChain> filterChains = new Vector<FilterChain>(); + private final List<FilterChain> filterChains = new Vector<>(); /** * Encoding to use for input; defaults to the platform's default encoding. @@ -158,6 +158,7 @@ public class LoadProperties extends Task { * * @exception BuildException if something goes wrong with the build */ + @Override public final void execute() throws BuildException { //validation if (src == null) { @@ -171,30 +172,21 @@ public class LoadProperties extends Task { } throw new BuildException("Source resource does not exist: " + src); } - BufferedInputStream bis = null; - Reader instream = null; - ByteArrayInputStream tis = null; - - try { - bis = new BufferedInputStream(src.getInputStream()); - if (encoding == null) { - instream = new InputStreamReader(bis); - } else { - instream = new InputStreamReader(bis, encoding); - } - ChainReaderHelper crh = new ChainReaderHelper(); - crh.setPrimaryReader(instream); - crh.setFilterChains(filterChains); - crh.setProject(getProject()); - instream = crh.getAssembledReader(); - String text = crh.readFully(instream); + Charset charset = encoding == null ? Charset.defaultCharset() : Charset.forName(encoding); + + try (ChainReader instream = new ChainReaderHelper(getProject(), + new InputStreamReader(src.getInputStream(), charset), filterChains) + .getAssembledReader()) { + + String text = instream.readFully(); - if (text != null && text.length() != 0) { + if (!(text == null || text.isEmpty())) { if (!text.endsWith("\n")) { text = text + "\n"; } - tis = new ByteArrayInputStream(text.getBytes(ResourceUtils.ISO_8859_1)); + ByteArrayInputStream tis = new ByteArrayInputStream( + text.getBytes(ResourceUtils.ISO_8859_1)); final Properties props = new Properties(); props.load(tis); @@ -206,9 +198,6 @@ public class LoadProperties extends Task { } } catch (final IOException ioe) { throw new BuildException("Unable to load file: " + ioe, ioe, getLocation()); - } finally { - FileUtils.close(bis); - FileUtils.close(tis); } } @@ -217,7 +206,7 @@ public class LoadProperties extends Task { * @param filter the filter to add */ public final void addFilterChain(FilterChain filter) { - filterChains.addElement(filter); + filterChains.add(filter); } /**
