http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java index 35f01b3..f546b23 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java @@ -28,14 +28,16 @@ import java.io.OutputStream; import java.nio.file.Files; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.StringTokenizer; import java.util.Vector; +import java.util.function.Predicate; +import java.util.stream.Stream; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; @@ -65,7 +67,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); private final FTPTask task; - private Set dirCache = new HashSet(); + private Set<File> dirCache = new HashSet<>(); private int transferred = 0; private int skipped = 0; @@ -83,6 +85,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { * */ protected static class FTPFileProxy extends File { + private static final long serialVersionUID = 1L; private final FTPFile file; private final String[] parts; @@ -110,34 +113,34 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { parts = FileUtils.getPathStack(completePath); } - /* (non-Javadoc) * @see java.io.File#exists() */ + @Override public boolean exists() { return true; } - /* (non-Javadoc) * @see java.io.File#getAbsolutePath() */ + @Override public String getAbsolutePath() { return name; } - /* (non-Javadoc) * @see java.io.File#getName() */ + @Override public String getName() { return parts.length > 0 ? parts[parts.length - 1] : name; } - /* (non-Javadoc) * @see java.io.File#getParent() */ + @Override public String getParent() { String result = ""; for(int i = 0; i < parts.length - 1; i++){ @@ -146,53 +149,53 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { return result; } - /* (non-Javadoc) * @see java.io.File#getPath() */ + @Override public String getPath() { return name; } - /** * FTP files are stored as absolute paths * @return true */ + @Override public boolean isAbsolute() { return true; } - /* (non-Javadoc) * @see java.io.File#isDirectory() */ + @Override public boolean isDirectory() { return file == null; } - /* (non-Javadoc) * @see java.io.File#isFile() */ + @Override public boolean isFile() { return file != null; } - /** * FTP files cannot be hidden * * @return false */ + @Override public boolean isHidden() { return false; } - /* (non-Javadoc) * @see java.io.File#lastModified() */ + @Override public long lastModified() { if (file != null) { return file.getTimestamp().getTimeInMillis(); @@ -200,10 +203,10 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { return 0; } - /* (non-Javadoc) * @see java.io.File#length() */ + @Override public long length() { if (file != null) { return file.getSize(); @@ -244,11 +247,11 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { this.setFollowSymlinks(false); } - /** * scans the remote directory, * storing internally the included files, directories, ... */ + @Override public void scan() { if (includes == null) { // No includes supplied, so set it to 'matches all' @@ -259,12 +262,12 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { excludes = new String[0]; } - filesIncluded = new VectorSet(); - filesNotIncluded = new Vector(); - filesExcluded = new VectorSet(); - dirsIncluded = new VectorSet(); - dirsNotIncluded = new Vector(); - dirsExcluded = new VectorSet(); + filesIncluded = new VectorSet<>(); + filesNotIncluded = new Vector<>(); + filesExcluded = new VectorSet<>(); + dirsIncluded = new VectorSet<>(); + dirsNotIncluded = new Vector<>(); + dirsExcluded = new VectorSet<>(); try { String cwd = ftp.printWorkingDirectory(); @@ -279,7 +282,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } - /** * this routine is actually checking all the include patterns in * order to avoid scanning everything under base dir @@ -287,7 +289,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { */ private void checkIncludePatterns() { - Hashtable newroots = new Hashtable(); + Map<String, String> newroots = new Hashtable<>(); // put in the newroots vector the include patterns without // wildcard tokens for (int icounter = 0; icounter < includes.length; icounter++) { @@ -312,75 +314,73 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } else { // only scan directories that can include matched files or // directories - Enumeration enum2 = newroots.keys(); - - while (enum2.hasMoreElements()) { - String currentelement = (String) enum2.nextElement(); - String originalpattern = (String) newroots.get(currentelement); - AntFTPFile myfile = new AntFTPFile(baseFTPFile, currentelement); - boolean isOK = true; - boolean traversesSymlinks = false; - String path = null; - - if (myfile.exists()) { - forceRemoteSensitivityCheck(); - if (remoteSensitivityChecked - && remoteSystemCaseSensitive && isFollowSymlinks()) { - // cool case, - //we do not need to scan all the subdirs in the relative path - path = myfile.getFastRelativePath(); - } else { - // may be on a case insensitive file system. We want - // the results to show what's really on the disk, so - // we need to double check. - try { - path = myfile.getRelativePath(); - traversesSymlinks = myfile.isTraverseSymlinks(); - } catch (IOException be) { - throw new BuildException(be, task.getLocation()); - } catch (BuildException be) { - isOK = false; - } - } - } else { + newroots.forEach( + (k, v) -> scanRoot(new AntFTPFile(baseFTPFile, k), v)); + } + } + + private void scanRoot(AntFTPFile myfile, String originalpattern) { + String currentelement; + boolean isOK = true; + boolean traversesSymlinks = false; + String path = null; + + if (myfile.exists()) { + forceRemoteSensitivityCheck(); + if (remoteSensitivityChecked + && remoteSystemCaseSensitive && isFollowSymlinks()) { + // cool case, + //we do not need to scan all the subdirs in the relative path + path = myfile.getFastRelativePath(); + } else { + // may be on a case insensitive file system. We want + // the results to show what's really on the disk, so + // we need to double check. + try { + path = myfile.getRelativePath(); + traversesSymlinks = myfile.isTraverseSymlinks(); + } catch (IOException be) { + throw new BuildException(be, task.getLocation()); + } catch (BuildException be) { isOK = false; } - if (isOK) { - currentelement = path.replace(task.getSeparator().charAt(0), File.separatorChar); - if (!isFollowSymlinks() - && traversesSymlinks) { - continue; - } + } + } else { + isOK = false; + } + if (isOK) { + currentelement = path.replace(task.getSeparator().charAt(0), File.separatorChar); + if (!isFollowSymlinks() + && traversesSymlinks) { + return; + } - if (myfile.isDirectory()) { - if (isIncluded(currentelement) - && currentelement.length() > 0) { - accountForIncludedDir(currentelement, myfile, true); - } else { - if (currentelement.length() > 0) { - if (currentelement.charAt(currentelement - .length() - 1) - != File.separatorChar) { - currentelement = - currentelement + File.separatorChar; - } - } - scandir(myfile.getAbsolutePath(), currentelement, true); - } - } else { - if (isCaseSensitive - && originalpattern.equals(currentelement)) { - accountForIncludedFile(currentelement); - } else if (!isCaseSensitive - && originalpattern - .equalsIgnoreCase(currentelement)) { - accountForIncludedFile(currentelement); + if (myfile.isDirectory()) { + if (isIncluded(currentelement) + && currentelement.length() > 0) { + accountForIncludedDir(currentelement, myfile, true); + } else { + if (currentelement.length() > 0) { + if (currentelement.charAt(currentelement + .length() - 1) + != File.separatorChar) { + currentelement = + currentelement + File.separatorChar; } } + scandir(myfile.getAbsolutePath(), currentelement, true); } + } else if (isCaseSensitive + && originalpattern.equals(currentelement)) { + accountForIncludedFile(currentelement); + } else if (!isCaseSensitive + && originalpattern + .equalsIgnoreCase(currentelement)) { + accountForIncludedFile(currentelement); } } } + /** * scans a particular directory. populates the scannedDirs cache. * @@ -398,8 +398,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (!ftp.changeWorkingDirectory(dir)) { return; } - String completePath = null; - if (!vpath.equals("")) { + String completePath; + if (!"".equals(vpath)) { completePath = rootPath + task.getSeparator() + vpath.replace(File.separatorChar, task.getSeparator().charAt(0)); } else { @@ -414,8 +414,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { for (int i = 0; i < newfiles.length; i++) { FTPFile file = newfiles[i]; if (file != null - && !file.getName().equals(".") - && !file.getName().equals("..")) { + && !".".equals(file.getName()) + && !"..".equals(file.getName())) { String name = vpath + file.getName(); scannedDirs.put(name, new FTPFileProxy(file)); if (isFunctioningAsDirectory(ftp, dir, file)) { @@ -462,7 +462,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (isIncluded(name)) { if (!isExcluded(name) - && isSelected(name, (File) scannedDirs.get(name))) { + && isSelected(name, scannedDirs.get(name))) { filesIncluded.addElement(name); } else { filesExcluded.addElement(name); @@ -519,19 +519,21 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } } + /** * temporary table to speed up the various scanning methods below * * @since Ant 1.6 */ - private Map fileListMap = new HashMap(); + private Map<String, FTPFile[]> fileListMap = new HashMap<>(); + /** * List of all scanned directories. * * @since Ant 1.6 */ - private Map scannedDirs = new HashMap(); + private Map<String, FTPFileProxy> scannedDirs = new HashMap<>(); /** * Has the directory with the given path relative to the base @@ -552,6 +554,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { fileListMap.clear(); scannedDirs.clear(); } + /** * list the files present in one directory. * @param directory full path on the remote side @@ -563,8 +566,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { String currentPath = directory; if (changedir) { try { - boolean result = ftp.changeWorkingDirectory(directory); - if (!result) { + if (!ftp.changeWorkingDirectory(directory)) { return null; } currentPath = ftp.printWorkingDirectory(); @@ -574,9 +576,9 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } if (fileListMap.containsKey(currentPath)) { task.log("filelist map used in listing files", Project.MSG_DEBUG); - return ((FTPFile[]) fileListMap.get(currentPath)); + return fileListMap.get(currentPath); } - FTPFile[] result = null; + FTPFile[] result; try { result = ftp.listFiles(); } catch (IOException ioe) { @@ -598,6 +600,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } } + /** * cd into one directory and * list the files present in one directory. @@ -607,6 +610,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public FTPFile[] listFiles(String directory) { return listFiles(directory, true); } + private void checkRemoteSensitivity(FTPFile[] array, String directory) { if (array == null) { return; @@ -615,8 +619,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { String target = null; for (int icounter = 0; icounter < array.length; icounter++) { if (array[icounter] != null && array[icounter].isDirectory()) { - if (!array[icounter].getName().equals(".") - && !array[icounter].getName().equals("..")) { + if (!".".equals(array[icounter].getName()) + && !"..".equals(array[icounter].getName())) { candidateFound = true; target = fiddleName(array[icounter].getName()); task.log("will try to cd to " @@ -656,8 +660,9 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { remoteSensitivityChecked = true; } } + private String fiddleName(String origin) { - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); for (int icounter = 0; icounter < origin.length(); icounter++) { if (Character.isLowerCase(origin.charAt(icounter))) { result.append(Character.toUpperCase(origin.charAt(icounter))); @@ -669,6 +674,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } return result.toString(); } + /** * an AntFTPFile is a representation of a remote file * @since Ant 1.6 @@ -693,6 +699,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { private boolean relativePathCalculated = false; private boolean traversesSymlinks = false; private String relativePath = ""; + /** * constructor * @param client ftp client variable @@ -704,6 +711,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { this.ftpFile = ftpFile; this.curpwd = curpwd; } + /** * other constructor * @param parent the parent file @@ -712,7 +720,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public AntFTPFile(AntFTPFile parent, String path) { this.parent = parent; this.client = parent.client; - Vector pathElements = SelectorUtils.tokenizePath(path); + List<String> pathElements = SelectorUtils.tokenizePath(path); try { boolean result = this.client.changeWorkingDirectory(parent.getAbsolutePath()); //this should not happen, except if parent has been deleted by another process @@ -721,35 +729,35 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } this.curpwd = parent.getAbsolutePath(); } catch (IOException ioe) { - throw new BuildException("could not change working dir to " - + parent.curpwd); + throw new BuildException( + "could not change working dir to %s", parent.curpwd); } final int size = pathElements.size(); for (int fcount = 0; fcount < size - 1; fcount++) { - String currentPathElement = (String) pathElements.elementAt(fcount); + String currentPathElement = pathElements.get(fcount); try { - boolean result = this.client.changeWorkingDirectory(currentPathElement); - if (!result && !isCaseSensitive() - && (remoteSystemCaseSensitive || !remoteSensitivityChecked)) { - currentPathElement = findPathElementCaseUnsensitive(this.curpwd, - currentPathElement); - if (currentPathElement == null) { - return; + if (!this.client.changeWorkingDirectory(currentPathElement)) { + if (!isCaseSensitive() && (remoteSystemCaseSensitive + || !remoteSensitivityChecked)) { + currentPathElement = + findPathElementCaseUnsensitive(this.curpwd, + currentPathElement); + if (currentPathElement == null) { + return; + } } - } else if (!result) { return; } - this.curpwd = getCurpwdPlusFileSep() - + currentPathElement; + this.curpwd = + getCurpwdPlusFileSep() + currentPathElement; } catch (IOException ioe) { - throw new BuildException("could not change working dir to " - + (String) pathElements.elementAt(fcount) - + " from " + this.curpwd); + throw new BuildException( + "could not change working dir to %s from %s", + currentPathElement, this.curpwd); } - } - String lastpathelement = (String) pathElements.elementAt(size - 1); - FTPFile [] theFiles = listFiles(this.curpwd); + String lastpathelement = pathElements.get(size - 1); + FTPFile[] theFiles = listFiles(this.curpwd); this.ftpFile = getFile(theFiles, lastpathelement); } /** @@ -766,10 +774,10 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (theFiles == null) { return null; } - for (int icounter = 0; icounter < theFiles.length; icounter++) { - if (theFiles[icounter] != null - && theFiles[icounter].getName().equalsIgnoreCase(soughtPathElement)) { - return theFiles[icounter].getName(); + for (FTPFile f : theFiles) { + if (f != null + && f.getName().equalsIgnoreCase(soughtPathElement)) { + return f.getName(); } } return null; @@ -779,8 +787,9 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { * @return true if the file exists */ public boolean exists() { - return (ftpFile != null); + return ftpFile != null; } + /** * if the file is a symbolic link, find out to what it is pointing * @return the target of the symbolic link @@ -788,6 +797,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public String getLink() { return ftpFile.getLink(); } + /** * get the name of the file * @return the name of the file @@ -795,6 +805,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public String getName() { return ftpFile.getName(); } + /** * find out the absolute path of the file * @return absolute path as string @@ -802,6 +813,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public String getAbsolutePath() { return getCurpwdPlusFileSep() + ftpFile.getName(); } + /** * find out the relative path assuming that the path used to construct * this AntFTPFile was spelled properly with regards to case. @@ -816,6 +828,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } return null; } + /** * find out the relative path to the rootPath of the enclosing scanner. * this relative path is spelled exactly like on disk, @@ -842,6 +855,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } return relativePath; } + /** * get the relative path of this file * @param currentPath base path @@ -849,19 +863,20 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { * @return relative path */ private String getRelativePath(String currentPath, String currentRelativePath) { - Vector pathElements = SelectorUtils.tokenizePath(getAbsolutePath(), task.getSeparator()); - Vector pathElements2 = SelectorUtils.tokenizePath(currentPath, - task.getSeparator()); + List<String> pathElements = SelectorUtils + .tokenizePath(getAbsolutePath(), task.getSeparator()); + List<String> pathElements2 = SelectorUtils + .tokenizePath(currentPath, task.getSeparator()); String relPath = currentRelativePath; final int size = pathElements.size(); for (int pcount = pathElements2.size(); pcount < size; pcount++) { - String currentElement = (String) pathElements.elementAt(pcount); + String currentElement = pathElements.get(pcount); FTPFile[] theFiles = listFiles(currentPath); FTPFile theFile = null; if (theFiles != null) { theFile = getFile(theFiles, currentElement); } - if (!relPath.equals("")) { + if (!"".equals(relPath)) { relPath = relPath + task.getSeparator(); } if (theFile == null) { @@ -881,6 +896,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } return relPath; } + /** * find a file matching a string in an array of FTPFile. * This method will find "alpha" when requested for "ALPHA" @@ -894,19 +910,13 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (theFiles == null) { return null; } - for (int fcount = 0; fcount < theFiles.length; fcount++) { - if (theFiles[fcount] != null) { - if (theFiles[fcount].getName().equals(lastpathelement)) { - return theFiles[fcount]; - } else if (!isCaseSensitive() - && theFiles[fcount].getName().equalsIgnoreCase( - lastpathelement)) { - return theFiles[fcount]; - } - } - } - return null; + Predicate<String> test = + isCaseSensitive() ? lastpathelement::equals + : lastpathelement::equalsIgnoreCase; + return Stream.of(theFiles).filter(f -> test.test(f.getName())) + .findFirst().orElse(null); } + /** * tell if a file is a directory. * note that it will return false for symbolic links pointing to directories. @@ -915,6 +925,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public boolean isDirectory() { return ftpFile.isDirectory(); } + /** * tell if a file is a symbolic link * @return <code>true</code> for symbolic links @@ -922,6 +933,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public boolean isSymbolicLink() { return ftpFile.isSymbolicLink(); } + /** * return the attached FTP client object. * Warning : this instance is really shared with the enclosing class. @@ -938,6 +950,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { protected void setCurpwd(String curpwd) { this.curpwd = curpwd; } + /** * returns the path of the directory containing the AntFTPFile. * of the full path of the file itself in case of AntFTPRootFile @@ -946,6 +959,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { public String getCurpwd() { return curpwd; } + /** * returns the path of the directory containing the AntFTPFile. * of the full path of the file itself in case of AntFTPRootFile @@ -957,6 +971,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { String sep = task.getSeparator(); return curpwd.endsWith(sep) ? curpwd : curpwd + sep; } + /** * find out if a symbolic link is encountered in the relative path of this file * from rootPath. @@ -977,16 +992,19 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { * Get a string rep of this object. * @return a string containing the pwd and the file. */ + @Override public String toString() { return "AntFtpFile: " + curpwd + "%" + ftpFile; } } + /** * special class to represent the remote directory itself * @since Ant 1.6 */ protected class AntFTPRootFile extends AntFTPFile { private String remotedir; + /** * constructor * @param aclient FTP client @@ -1002,24 +1020,29 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { throw new BuildException(ioe, task.getLocation()); } } + /** * find the absolute path * @return absolute path */ + @Override public String getAbsolutePath() { return this.getCurpwd(); } + /** * find out the relative path to root * @return empty string * @throws BuildException actually never * @throws IOException actually never */ + @Override public String getRelativePath() throws BuildException, IOException { return ""; } } } + /** * check FTPFiles to check whether they function as directories too * the FTPFile API seem to make directory and symbolic links incompatible @@ -1034,7 +1057,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { String currentWorkingDir = null; if (file.isDirectory()) { return true; - } else if (file.isFile()) { + } + if (file.isFile()) { return false; } try { @@ -1060,14 +1084,16 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { Project.MSG_ERR); } finally { if (!comeback) { - throw new BuildException("could not cd back to " + dir //NOSONAR - + " while checking a symlink"); + throw new BuildException( + "could not cd back to %s while checking a symlink", + dir); } } } } return result; } + /** * check FTPFiles to check whether they function as directories too * the FTPFile API seem to make directory and symbolic links incompatible @@ -1080,7 +1106,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { private boolean isFunctioningAsFile(FTPClient ftp, String dir, FTPFile file) { if (file.isDirectory()) { return false; - } else if (file.isFile()) { + } + if (file.isFile()) { return true; } return !isFunctioningAsDirectory(ftp, dir, file); @@ -1099,7 +1126,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { h.execute(r, descr); } - /** * For each file in the fileset, do the appropriate action: send, get, * delete, or list. @@ -1130,16 +1156,17 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } else { dsfiles = ds.getIncludedFiles(); } - String dir = null; if ((ds.getBasedir() == null) - && ((task.getAction() == FTPTask.SEND_FILES) || (task.getAction() == FTPTask.GET_FILES))) { - throw new BuildException("the dir attribute must be set for send " - + "and get actions"); - } else { - if ((task.getAction() == FTPTask.SEND_FILES) || (task.getAction() == FTPTask.GET_FILES)) { - dir = ds.getBasedir().getAbsolutePath(); - } + && ((task.getAction() == FTPTask.SEND_FILES) + || (task.getAction() == FTPTask.GET_FILES))) { + throw new BuildException( + "the dir attribute must be set for send and get actions"); + } + String dir = null; + if ((task.getAction() == FTPTask.SEND_FILES) + || (task.getAction() == FTPTask.GET_FILES)) { + dir = ds.getBasedir().getAbsolutePath(); } // If we are doing a listing, we need the output stream created now. @@ -1160,11 +1187,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { // the trunk does not let itself be removed before the leaves for (int i = dsfiles.length - 1; i >= 0; i--) { final String dsfile = dsfiles[i]; - executeRetryable(h, new Retryable() { - public void execute() throws IOException { - rmDir(ftp, dsfile); - } - }, dsfile); + executeRetryable(h, () -> rmDir(ftp, dsfile), dsfile); } } else { final BufferedWriter fbw = bw; @@ -1175,32 +1198,30 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } for (int i = 0; i < dsfiles.length; i++) { final String dsfile = dsfiles[i]; - executeRetryable(h, new Retryable() { - public void execute() throws IOException { - switch (task.getAction()) { - case FTPTask.SEND_FILES: - sendFile(ftp, fdir, dsfile); - break; - case FTPTask.GET_FILES: - getFile(ftp, fdir, dsfile); - break; - case FTPTask.DEL_FILES: - delFile(ftp, dsfile); - break; - case FTPTask.LIST_FILES: - listFile(ftp, fbw, dsfile); - break; - case FTPTask.CHMOD: - doSiteCommand(ftp, "chmod " + task.getChmod() + " " - + resolveFile(dsfile)); - transferred++; - break; - default: - throw new BuildException("unknown ftp action " - + task.getAction()); - } - } - }, dsfile); + executeRetryable(h, () -> { + switch (task.getAction()) { + case FTPTask.SEND_FILES: + sendFile(ftp, fdir, dsfile); + break; + case FTPTask.GET_FILES: + getFile(ftp, fdir, dsfile); + break; + case FTPTask.DEL_FILES: + delFile(ftp, dsfile); + break; + case FTPTask.LIST_FILES: + listFile(ftp, fbw, dsfile); + break; + case FTPTask.CHMOD: + doSiteCommand(ftp, "chmod " + task.getChmod() + " " + + resolveFile(dsfile)); + transferred++; + break; + default: + throw new BuildException("unknown ftp action %s", + task.getAction()); + } + }, dsfile); } } } finally { @@ -1227,29 +1248,26 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { transferred = 0; skipped = 0; - if (task.getFilesets().size() == 0) { + if (task.getFilesets().isEmpty()) { throw new BuildException("at least one fileset must be specified."); - } else { - // get files from filesets - final int size = task.getFilesets().size(); - for (int i = 0; i < size; i++) { - FileSet fs = (FileSet) task.getFilesets().elementAt(i); - - if (fs != null) { - transferFiles(ftp, fs); - } + } + // get files from filesets + for (FileSet fs : task.getFilesets()) { + if (fs != null) { + transferFiles(ftp, fs); } } - - task.log(transferred + " " + FTPTask.ACTION_TARGET_STRS[task.getAction()] + " " - + FTPTask.COMPLETED_ACTION_STRS[task.getAction()]); + task.log( + transferred + " " + FTPTask.ACTION_TARGET_STRS[task.getAction()] + + " " + FTPTask.COMPLETED_ACTION_STRS[task.getAction()]); if (skipped != 0) { - task.log(skipped + " " + FTPTask.ACTION_TARGET_STRS[task.getAction()] - + " were not successfully " + FTPTask.COMPLETED_ACTION_STRS[task.getAction()]); + task.log( + skipped + " " + FTPTask.ACTION_TARGET_STRS[task.getAction()] + + " were not successfully " + + FTPTask.COMPLETED_ACTION_STRS[task.getAction()]); } } - /** * Correct a file path to correspond to the remote host requirements. This * implementation currently assumes that the remote end can handle @@ -1266,7 +1284,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { task.getSeparator().charAt(0)); } - /** * Creates all parent directories specified in a complete relative * pathname. Attempts to create existing directories will not cause @@ -1287,7 +1304,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { return; } - Vector parents = new Vector(); + Vector<File> parents = new Vector<>(); String dirname; while ((dirname = dir.getParent()) != null) { @@ -1307,13 +1324,14 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { String parent = dir.getParent(); if (parent != null) { if (!ftp.changeWorkingDirectory(resolveFile(parent))) { - throw new BuildException("could not change to " - + "directory: " + ftp.getReplyString()); + throw new BuildException( + "could not change to directory: %s", + ftp.getReplyString()); } } while (i >= 0) { - dir = (File) parents.elementAt(i--); + dir = parents.elementAt(i--); // check if dir exists by trying to change into it. if (!ftp.changeWorkingDirectory(dir.getName())) { // could not change to it - try to create it @@ -1323,8 +1341,9 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { handleMkDirFailure(ftp); } if (!ftp.changeWorkingDirectory(dir.getName())) { - throw new BuildException("could not change to " - + "directory: " + ftp.getReplyString()); + throw new BuildException( + "could not change to directory: %s", + ftp.getReplyString()); } } dirCache.add(dir); @@ -1332,6 +1351,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { ftp.changeWorkingDirectory(cwd); } } + /** * auto find the time difference between local and remote * @param ftp handle to ftp client @@ -1348,8 +1368,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { BufferedInputStream instream = new BufferedInputStream(Files.newInputStream(tempFile.toPath())); ftp.storeFile(tempFile.getName(), instream); instream.close(); - boolean success = FTPReply.isPositiveCompletion(ftp.getReplyCode()); - if (success) { + if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) { FTPFile [] ftpFiles = ftp.listFiles(tempFile.getName()); if (ftpFiles.length == 1) { long remoteTimeStamp = ftpFiles[0].getTimestamp().getTime().getTime(); @@ -1368,11 +1387,12 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } return returnValue; } + /** * find a suitable name for local and remote temporary file */ private File findFileName(FTPClient ftp) { - FTPFile [] theFiles = null; + FTPFile[] theFiles = null; final int maxIterations = 1000; for (int counter = 1; counter < maxIterations; counter++) { File localFile = FILE_UTILS.createTempFile( @@ -1430,10 +1450,9 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { task.log("Could not date test remote file: " + remoteFile + "assuming out of date.", Project.MSG_VERBOSE); return false; - } else { - throw new BuildException("could not date test remote file: " - + ftp.getReplyString()); } + throw new BuildException("could not date test remote file: %s", + ftp.getReplyString()); } long remoteTimestamp = files[0].getTimestamp().getTime().getTime(); @@ -1441,16 +1460,16 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { long adjustedRemoteTimestamp = remoteTimestamp + task.getTimeDiffMillis() + task.getGranularityMillis(); - StringBuffer msg; + StringBuilder msg; synchronized(TIMESTAMP_LOGGING_SDF) { - msg = new StringBuffer(" [") + msg = new StringBuilder(" [") .append(TIMESTAMP_LOGGING_SDF.format(new Date(localTimestamp))) .append("] local"); } task.log(msg.toString(), Project.MSG_VERBOSE); synchronized(TIMESTAMP_LOGGING_SDF) { - msg = new StringBuffer(" [") + msg = new StringBuilder(" [") .append(TIMESTAMP_LOGGING_SDF.format(new Date(adjustedRemoteTimestamp))) .append("] remote"); } @@ -1465,9 +1484,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (task.getAction() == FTPTask.SEND_FILES) { return adjustedRemoteTimestamp >= localTimestamp; - } else { - return localTimestamp >= adjustedRemoteTimestamp; } + return localTimestamp >= adjustedRemoteTimestamp; } @@ -1480,28 +1498,21 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { */ protected void doSiteCommand(FTPClient ftp, String theCMD) throws IOException, BuildException { - boolean rc; - String[] myReply = null; task.log("Doing Site Command: " + theCMD, Project.MSG_VERBOSE); - rc = ftp.sendSiteCommand(theCMD); - - if (!rc) { - task.log("Failed to issue Site Command: " + theCMD, Project.MSG_WARN); + if (!ftp.sendSiteCommand(theCMD)) { + task.log("Failed to issue Site Command: " + theCMD, + Project.MSG_WARN); } else { - - myReply = ftp.getReplyStrings(); - - for (int x = 0; x < myReply.length; x++) { - if (myReply[x].indexOf("200") == -1) { - task.log(myReply[x], Project.MSG_WARN); + for (String reply : ftp.getReplyStrings()) { + if (reply.indexOf("200") == -1) { + task.log(reply, Project.MSG_WARN); } } } } - /** * Sends a single file to the remote host. <code>filename</code> may * contain a relative path specification. When this is the case, <code>sendFile</code> @@ -1540,9 +1551,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { ftp.storeFile(resolveFile(filename), instream); - boolean success = FTPReply.isPositiveCompletion(ftp.getReplyCode()); - - if (!success) { + if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { String s = "could not put file: " + ftp.getReplyString(); if (task.isSkipFailedTransfers()) { @@ -1567,7 +1576,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } - /** * Delete a file from the remote host. * @param ftp ftp client @@ -1628,7 +1636,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } - /** * Retrieve a single file from the remote host. <code>filename</code> may * contain a relative path specification. <p> @@ -1699,7 +1706,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } - /** * List information about a single file from the remote host. <code>filename</code> * may contain a relative path specification. <p> @@ -1728,7 +1734,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } - /** * Create the specified directory on the remote host. * @@ -1754,10 +1759,9 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (dir.startsWith("/")) { ftp.changeWorkingDirectory("/"); } - String subdir = ""; StringTokenizer st = new StringTokenizer(dir, "/"); while (st.hasMoreTokens()) { - subdir = st.nextToken(); + String subdir = st.nextToken(); task.log("Checking " + subdir, Project.MSG_DEBUG); if (!ftp.changeWorkingDirectory(subdir)) { if (!ftp.makeDirectory(subdir)) { @@ -1804,6 +1808,7 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } + @Override public void doFTP() throws BuildException { FTPClient ftp = null; @@ -1818,8 +1823,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { ftp.setRemoteVerificationEnabled(task.getEnableRemoteVerification()); ftp.connect(task.getServer(), task.getPort()); if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { - throw new BuildException("FTP connection failed: " - + ftp.getReplyString()); + throw new BuildException("FTP connection failed: %s", + ftp.getReplyString()); } task.log("connected", Project.MSG_VERBOSE); @@ -1835,14 +1840,14 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (task.isBinary()) { ftp.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE); if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { - throw new BuildException("could not set transfer type: " - + ftp.getReplyString()); + throw new BuildException("could not set transfer type: %s", + ftp.getReplyString()); } } else { ftp.setFileType(org.apache.commons.net.ftp.FTP.ASCII_FILE_TYPE); if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { - throw new BuildException("could not set transfer type: " - + ftp.getReplyString()); + throw new BuildException("could not set transfer type: %s", + ftp.getReplyString()); } } @@ -1850,8 +1855,9 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { task.log("entering passive mode", Project.MSG_VERBOSE); ftp.enterLocalPassiveMode(); if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { - throw new BuildException("could not enter into passive " - + "mode: " + ftp.getReplyString()); + throw new BuildException( + "could not enter into passive mode: %s", + ftp.getReplyString()); } } @@ -1860,55 +1866,46 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { // E.G. switching between a UNIX file system mode and // a legacy file system. if (task.getInitialSiteCommand() != null) { - RetryHandler h = new RetryHandler(task.getRetriesAllowed(), task); final FTPClient lftp = ftp; - executeRetryable(h, new Retryable() { - public void execute() throws IOException { - doSiteCommand(lftp, task.getInitialSiteCommand()); - } - }, "initial site command: " + task.getInitialSiteCommand()); + executeRetryable(new RetryHandler(task.getRetriesAllowed(), task), + () -> doSiteCommand(lftp, task.getInitialSiteCommand()), + "initial site command: " + task.getInitialSiteCommand()); } - // For a unix ftp server you can set the default mask for all files // created. if (task.getUmask() != null) { - RetryHandler h = new RetryHandler(task.getRetriesAllowed(), task); final FTPClient lftp = ftp; - executeRetryable(h, new Retryable() { - public void execute() throws IOException { - doSiteCommand(lftp, "umask " + task.getUmask()); - } - }, "umask " + task.getUmask()); + executeRetryable( + new RetryHandler(task.getRetriesAllowed(), task), + () -> doSiteCommand(lftp, "umask " + task.getUmask()), + "umask " + task.getUmask()); } // If the action is MK_DIR, then the specified remote // directory is the directory to create. if (task.getAction() == FTPTask.MK_DIR) { - RetryHandler h = new RetryHandler(task.getRetriesAllowed(), task); final FTPClient lftp = ftp; - executeRetryable(h, new Retryable() { - public void execute() throws IOException { - makeRemoteDir(lftp, task.getRemotedir()); - } - }, task.getRemotedir()); + executeRetryable( + new RetryHandler(task.getRetriesAllowed(), task), + () -> makeRemoteDir(lftp, task.getRemotedir()), + task.getRemotedir()); } else if (task.getAction() == FTPTask.SITE_CMD) { - RetryHandler h = new RetryHandler(task.getRetriesAllowed(), task); final FTPClient lftp = ftp; - executeRetryable(h, new Retryable() { - public void execute() throws IOException { - doSiteCommand(lftp, task.getSiteCommand()); - } - }, "Site Command: " + task.getSiteCommand()); + executeRetryable( + new RetryHandler(task.getRetriesAllowed(), task), + () -> doSiteCommand(lftp, task.getSiteCommand()), + "Site Command: " + task.getSiteCommand()); } else { if (task.getRemotedir() != null) { task.log("changing the remote directory", Project.MSG_VERBOSE); ftp.changeWorkingDirectory(task.getRemotedir()); if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { - throw new BuildException("could not change remote " - + "directory: " + ftp.getReplyString()); + throw new BuildException( + "could not change remote directory: %s", + ftp.getReplyString()); } } if (task.isNewer() && task.isTimeDiffAuto()) { @@ -1919,7 +1916,6 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { task.log(FTPTask.ACTION_STRS[task.getAction()] + " " + FTPTask.ACTION_TARGET_STRS[task.getAction()]); transferFiles(ftp); } - } catch (IOException ex) { throw new BuildException("error during FTP transfer: " + ex, ex); } finally { @@ -1935,4 +1931,3 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { } } } -
http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java index fca4215..01db77a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/MimeMail.java @@ -28,12 +28,14 @@ import org.apache.tools.ant.taskdefs.email.EmailTask; * * @since Ant1.4 */ +@Deprecated public class MimeMail extends EmailTask { /** * Executes this build task. * * @exception BuildException On error. */ + @Override public void execute() throws BuildException { log("DEPRECATED - The " + getTaskName() + " task is deprecated. " http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java index d88874f..ff24beb 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java @@ -22,7 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Calendar; -import java.util.Enumeration; +import java.util.List; import java.util.Vector; import org.apache.commons.net.bsd.RExecClient; @@ -68,7 +68,7 @@ public class RExecTask extends Task { /** * The list of read/write commands for this session */ - private Vector rexecTasks = new Vector(); + private List<RExecSubTask> rexecTasks = new Vector<>(); /** * If true, adds a CR to beginning of login script @@ -97,7 +97,7 @@ public class RExecTask extends Task { */ public void execute(AntRExecClient rexec) throws BuildException { - throw new BuildException("Shouldn't be able instantiate a SubTask directly"); + throw new BuildException("Shouldn't be able to instantiate a SubTask directly"); } /** @@ -127,6 +127,7 @@ public class RExecTask extends Task { * @param rexec the task to use * @throws BuildException on error */ + @Override public void execute(AntRExecClient rexec) throws BuildException { rexec.sendString(taskString, echoString); @@ -153,6 +154,7 @@ public class RExecTask extends Task { * @param rexec the task to use * @throws BuildException on error */ + @Override public void execute(AntRExecClient rexec) throws BuildException { rexec.waitForString(taskString, timeout); @@ -202,7 +204,7 @@ public class RExecTask extends Task { public void waitForString(String s, Integer timeout) { InputStream is = this.getInputStream(); try { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); int windowStart = -s.length(); if (timeout == null || timeout.intValue() == 0) { while (windowStart < 0 @@ -253,6 +255,7 @@ public class RExecTask extends Task { throw new BuildException(e, getLocation()); } } + /** * Read from the rexec session until the EOF is found or * the timeout has been reached @@ -261,15 +264,15 @@ public class RExecTask extends Task { public void waitForEOF(Integer timeout) { InputStream is = this.getInputStream(); try { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); if (timeout == null || timeout.intValue() == 0) { int read; while ((read = is.read()) != -1) { char c = (char) read; sb.append(c); if (c == '\n') { - log(sb.toString(), Project.MSG_INFO); - sb.delete(0, sb.length()); + log(sb.toString(), Project.MSG_INFO); + sb.delete(0, sb.length()); } } } else { @@ -281,24 +284,24 @@ public class RExecTask extends Task { Thread.sleep(PAUSE_TIME); } if (is.available() == 0) { - log(sb.toString(), Project.MSG_INFO); - throw new BuildException( - "Response timed-out waiting for EOF", - getLocation()); + log(sb.toString(), Project.MSG_INFO); + throw new BuildException( + "Response timed-out waiting for EOF", + getLocation()); } read = is.read(); if (read != -1) { - char c = (char) read; - sb.append(c); - if (c == '\n') { + char c = (char) read; + sb.append(c); + if (c == '\n') { log(sb.toString(), Project.MSG_INFO); sb.delete(0, sb.length()); - } + } } } } if (sb.length() > 0) { - log(sb.toString(), Project.MSG_INFO); + log(sb.toString(), Project.MSG_INFO); } } catch (BuildException be) { throw be; @@ -306,8 +309,8 @@ public class RExecTask extends Task { throw new BuildException(e, getLocation()); } } - } + /** * A string to wait for from the server. * A subTask <read> tag was found. Create the object, @@ -316,10 +319,11 @@ public class RExecTask extends Task { */ public RExecSubTask createRead() { - RExecSubTask task = (RExecSubTask) new RExecRead(); - rexecTasks.addElement(task); + RExecSubTask task = new RExecRead(); + rexecTasks.add(task); return task; } + /** * Add text to send to the server * A subTask <write> tag was found. Create the object, @@ -327,16 +331,18 @@ public class RExecTask extends Task { * @return a write sub task */ public RExecSubTask createWrite() { - RExecSubTask task = (RExecSubTask) new RExecWrite(); - rexecTasks.addElement(task); + RExecSubTask task = new RExecWrite(); + rexecTasks.add(task); return task; } + /** * Verify that all parameters are included. * Connect and possibly login. * Iterate through the list of Reads and writes. * @throws BuildException on error */ + @Override public void execute() throws BuildException { /** A server name is required to continue */ if (server == null) { @@ -363,7 +369,7 @@ public class RExecTask extends Task { throw new BuildException("Can't connect to " + server); } if (userid != null && password != null && command != null //NOSONAR - && rexecTasks.size() == 0) { + && rexecTasks.isEmpty()) { // simple one-shot execution rexec.rexec(userid, password, command); } else { @@ -384,13 +390,14 @@ public class RExecTask extends Task { String msg = "Error disconnecting from " + server; if (success) { throw new BuildException(msg); //NOSONAR - } else { // don't hide inner exception - log(msg, Project.MSG_ERR); } + // don't hide inner exception + log(msg, Project.MSG_ERR); } } } } + /** * Process a 'typical' login. If it differs, use the read * and write tasks explicitly @@ -404,6 +411,7 @@ public class RExecTask extends Task { rexec.waitForString("assword:"); rexec.sendString(password, false); } + /** * Set the the command to execute on the server; * @param c a <code>String</code> value @@ -419,6 +427,7 @@ public class RExecTask extends Task { public void setInitialCR(boolean b) { this.addCarriageReturn = b; } + /** * Set the the login password to use * required if <tt>userid</tt> is set. @@ -452,6 +461,7 @@ public class RExecTask extends Task { public void setTimeout(Integer i) { this.defaultTimeout = i; } + /** * Set the the login id to use on the server; * required if <tt>password</tt> is set. @@ -473,9 +483,7 @@ public class RExecTask extends Task { login(rexec); } /** Process each sub command */ - Enumeration tasksToRun = rexecTasks.elements(); - while (tasksToRun != null && tasksToRun.hasMoreElements()) { - RExecSubTask task = (RExecSubTask) tasksToRun.nextElement(); + for (RExecSubTask task : rexecTasks) { if (task instanceof RExecRead && defaultTimeout != null) { ((RExecRead) task).setDefaultTimeout(defaultTimeout); } http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java index 1e1f659..748afcf 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java @@ -175,7 +175,6 @@ public class SetProxy extends Task { * apply to all network connections * Relevant docs: buglist #4183340 */ - public void applyWebProxySettings() { boolean settingsChanged = false; boolean enablingProxy = false; @@ -261,6 +260,7 @@ public class SetProxy extends Task { * * @exception BuildException thrown in unrecoverable error. */ + @Override public void execute() throws BuildException { applyWebProxySettings(); } @@ -275,6 +275,7 @@ public class SetProxy extends Task { auth = new PasswordAuthentication(user, pass.toCharArray()); } + @Override protected PasswordAuthentication getPasswordAuthentication() { return auth; } http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java index a89e7a9..412ef93 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java @@ -22,7 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Calendar; -import java.util.Enumeration; +import java.util.List; import java.util.Vector; import org.apache.commons.net.telnet.TelnetClient; @@ -34,7 +34,6 @@ import org.apache.tools.ant.Task; * Automates the telnet protocol. * */ - public class TelnetTask extends Task { private static final int WAIT_INTERVAL = 250; private static final int TELNET_PORT = 23; @@ -62,7 +61,7 @@ public class TelnetTask extends Task { /** * The list of read/write commands for this session */ - private Vector telnetTasks = new Vector(); + private List<TelnetSubTask> telnetTasks = new Vector<>(); /** * If true, adds a CR to beginning of login script @@ -81,6 +80,7 @@ public class TelnetTask extends Task { * Iterate through the list of Reads and writes * @throws BuildException on error */ + @Override public void execute() throws BuildException { /** A server name is required to continue */ if (server == null) { @@ -111,9 +111,7 @@ public class TelnetTask extends Task { login(telnet); } /** Process each sub command */ - Enumeration tasksToRun = telnetTasks.elements(); - while (tasksToRun != null && tasksToRun.hasMoreElements()) { - TelnetSubTask task = (TelnetSubTask) tasksToRun.nextElement(); + for (TelnetSubTask task : telnetTasks) { if (task instanceof TelnetRead && defaultTimeout != null) { ((TelnetRead) task).setDefaultTimeout(defaultTimeout); } @@ -209,8 +207,8 @@ public class TelnetTask extends Task { */ public TelnetSubTask createRead() { - TelnetSubTask task = (TelnetSubTask) new TelnetRead(); - telnetTasks.addElement(task); + TelnetSubTask task = new TelnetRead(); + telnetTasks.add(task); return task; } @@ -221,8 +219,8 @@ public class TelnetTask extends Task { * @return a write telnet sub task */ public TelnetSubTask createWrite() { - TelnetSubTask task = (TelnetSubTask) new TelnetWrite(); - telnetTasks.addElement(task); + TelnetSubTask task = new TelnetWrite(); + telnetTasks.add(task); return task; } @@ -271,6 +269,7 @@ public class TelnetTask extends Task { * @param telnet the task to use * @throws BuildException on error */ + @Override public void execute(AntTelnetClient telnet) throws BuildException { telnet.sendString(taskString, echoString); @@ -297,6 +296,7 @@ public class TelnetTask extends Task { * @param telnet the task to use * @throws BuildException on error */ + @Override public void execute(AntTelnetClient telnet) throws BuildException { telnet.waitForString(taskString, timeout); @@ -346,7 +346,7 @@ public class TelnetTask extends Task { public void waitForString(String s, Integer timeout) { InputStream is = this.getInputStream(); try { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); int windowStart = -s.length(); if (timeout == null || timeout.intValue() == 0) { while (windowStart < 0 http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java index 7bcfef9..9d844a1 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java @@ -28,7 +28,6 @@ import java.io.OutputStream; import java.nio.file.Files; import java.text.MessageFormat; import java.text.ParseException; -import java.util.Enumeration; import java.util.Random; import java.util.Vector; @@ -79,10 +78,20 @@ public class Pvcs extends org.apache.tools.ant.Task { private static final int POS_2 = 2; private static final int POS_3 = 3; + /** + * Constant for the thing to execute + */ + private static final String PCLI_EXE = "pcli"; + + /** + * Constant for the thing to execute + */ + private static final String GET_EXE = "get"; + private String pvcsbin; private String repository; private String pvcsProject; - private Vector pvcsProjects; + private Vector<PvcsProject> pvcsProjects; private String workspace; private String force; private String promotiongroup; @@ -94,21 +103,25 @@ public class Pvcs extends org.apache.tools.ant.Task { private String lineStart; private String userId; private String config; - /** - * Constant for the thing to execute - */ - private static final String PCLI_EXE = "pcli"; - - /* - * Constant for the PCLI listversionedfiles recursive i a format "get" understands - */ - // private static final String PCLI_LVF_ARGS = "lvf -z -aw"; /** - * Constant for the thing to execute + * Creates a Pvcs object */ - private static final String GET_EXE = "get"; - + public Pvcs() { + super(); + pvcsProject = null; + pvcsProjects = new Vector<>(); + workspace = null; + repository = null; + pvcsbin = null; + force = null; + promotiongroup = null; + label = null; + ignorerc = false; + updateOnly = false; + lineStart = "\"P:"; + filenameFormat = "{0}-arc({1})"; + } /** * Run the command. @@ -124,7 +137,7 @@ public class Pvcs extends org.apache.tools.ant.Task { exe.setWorkingDirectory(aProj.getBaseDir()); exe.setCommandline(cmd.getCommandline()); return exe.execute(); - } catch (java.io.IOException e) { + } catch (IOException e) { String msg = "Failed executing: " + cmd.toString() + ". Exception: " + e.getMessage(); throw new BuildException(msg, getLocation()); @@ -132,7 +145,7 @@ public class Pvcs extends org.apache.tools.ant.Task { } private String getExecutable(String exe) { - StringBuffer correctedExe = new StringBuffer(); + StringBuilder correctedExe = new StringBuilder(); if (getPvcsbin() != null) { if (pvcsbin.endsWith(File.separator)) { correctedExe.append(pvcsbin); @@ -146,10 +159,11 @@ public class Pvcs extends org.apache.tools.ant.Task { /** * @exception org.apache.tools.ant.BuildException Something is stopping the build... */ - public void execute() throws org.apache.tools.ant.BuildException { + @Override + public void execute() throws BuildException { int result = 0; - if (repository == null || repository.trim().equals("")) { + if (repository == null || repository.trim().isEmpty()) { throw new BuildException("Required argument repository not specified"); } @@ -183,12 +197,11 @@ public class Pvcs extends org.apache.tools.ant.Task { commandLine.createArgument().setValue(getPvcsproject()); } if (!getPvcsprojects().isEmpty()) { - Enumeration e = getPvcsprojects().elements(); - while (e.hasMoreElements()) { - String projectName = ((PvcsProject) e.nextElement()).getName(); - if (projectName == null || (projectName.trim()).equals("")) { - throw new BuildException("name is a required attribute " - + "of pvcsproject"); + for (PvcsProject pvcsProject : getPvcsprojects()) { + String projectName = pvcsProject.getName(); + if (projectName == null || projectName.trim().isEmpty()) { + throw new BuildException( + "name is a required attribute of pvcsproject"); } commandLine.createArgument().setValue(projectName); } @@ -298,9 +311,7 @@ public class Pvcs extends org.apache.tools.ant.Task { * Parses the file and creates the folders specified in the output section */ private void createFolders(File file) throws IOException, ParseException { - BufferedReader in = null; - try { - in = new BufferedReader(new FileReader(file)); + try (BufferedReader in = new BufferedReader(new FileReader(file))) { MessageFormat mf = new MessageFormat(getFilenameFormat()); String line = in.readLine(); while (line != null) { @@ -318,7 +329,10 @@ public class Pvcs extends org.apache.tools.ant.Task { int index = f.lastIndexOf(File.separator); if (index > -1) { File dir = new File(f.substring(0, index)); - if (!dir.exists()) { + if (dir.exists()) { + log(dir.getAbsolutePath() + " exists. Skipping", + Project.MSG_VERBOSE); + } else { log("Creating " + dir.getAbsolutePath(), Project.MSG_VERBOSE); if (dir.mkdirs() || dir.isDirectory()) { @@ -329,9 +343,6 @@ public class Pvcs extends org.apache.tools.ant.Task { + dir.getAbsolutePath(), Project.MSG_INFO); } - } else { - log(dir.getAbsolutePath() + " exists. Skipping", - Project.MSG_VERBOSE); } } else { log("File separator problem with " + line, @@ -342,8 +353,6 @@ public class Pvcs extends org.apache.tools.ant.Task { } line = in.readLine(); } - } finally { - FileUtils.close(in); } } @@ -355,20 +364,14 @@ public class Pvcs extends org.apache.tools.ant.Task { */ private void massagePCLI(File in, File out) throws IOException { - BufferedReader inReader = null; - BufferedWriter outWriter = null; - try { - inReader = new BufferedReader(new FileReader(in)); - outWriter = new BufferedWriter(new FileWriter(out)); - String s = null; - while ((s = inReader.readLine()) != null) { - String sNormal = s.replace('\\', '/'); - outWriter.write(sNormal); + try (BufferedReader inReader = new BufferedReader(new FileReader(in)); + BufferedWriter outWriter = + new BufferedWriter(new FileWriter(out))) { + for (String line : (Iterable<String>) () -> inReader.lines() + .map(s -> s.replace('\\', '/')).iterator()) { + outWriter.write(line); outWriter.newLine(); } - } finally { - FileUtils.close(inReader); - FileUtils.close(outWriter); } } @@ -458,7 +461,7 @@ public class Pvcs extends org.apache.tools.ant.Task { * Get name of the project in the PVCS repository * @return Vector */ - public Vector getPvcsprojects() { + public Vector<PvcsProject> getPvcsprojects() { return pvcsProjects; } @@ -523,11 +526,7 @@ public class Pvcs extends org.apache.tools.ant.Task { * @param f String (yes/no) */ public void setForce(String f) { - if (f != null && f.equalsIgnoreCase("yes")) { - force = "yes"; - } else { - force = "no"; - } + force = "yes".equalsIgnoreCase(f) ? "yes" : "no"; } /** @@ -654,23 +653,5 @@ public class Pvcs extends org.apache.tools.ant.Task { userId = u; } - /** - * Creates a Pvcs object - */ - public Pvcs() { - super(); - pvcsProject = null; - pvcsProjects = new Vector(); - workspace = null; - repository = null; - pvcsbin = null; - force = null; - promotiongroup = null; - label = null; - ignorerc = false; - updateOnly = false; - lineStart = "\"P:"; - filenameFormat = "{0}-arc({1})"; - } } http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java index a8c6a2a..8f0aed7 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java @@ -26,11 +26,6 @@ package org.apache.tools.ant.taskdefs.optional.pvcs; public class PvcsProject { private String name; - /** no arg constructor */ - public PvcsProject() { - super(); - } - /** * Set the name of the project * @param name the value to use.
