Browse Source

oops - make it compile under Java5 again

master
Jan Matèrne 11 years ago
parent
commit
789422e131
20 changed files with 536 additions and 507 deletions
  1. +2
    -1
      src/main/org/apache/tools/ant/filters/util/JavaClassHelper.java
  2. +35
    -35
      src/main/org/apache/tools/ant/listener/CommonsLoggingListener.java
  3. +20
    -19
      src/main/org/apache/tools/ant/listener/Log4jListener.java
  4. +41
    -39
      src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java
  5. +6
    -6
      src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java
  6. +45
    -41
      src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.java
  7. +27
    -25
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java
  8. +16
    -15
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java
  9. +1
    -0
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
  10. +44
    -43
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHSession.java
  11. +41
    -40
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java
  12. +52
    -50
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java
  13. +37
    -36
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessageBySftp.java
  14. +50
    -48
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java
  15. +43
    -42
      src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessageBySftp.java
  16. +12
    -11
      src/main/org/apache/tools/ant/types/resolver/ApacheCatalog.java
  17. +17
    -17
      src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
  18. +23
    -19
      src/main/org/apache/tools/ant/util/depend/bcel/DependencyVisitor.java
  19. +16
    -14
      src/main/org/apache/tools/ant/util/regexp/JakartaOroMatcher.java
  20. +8
    -6
      src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java

+ 2
- 1
src/main/org/apache/tools/ant/filters/util/JavaClassHelper.java View File

@@ -22,6 +22,7 @@ import java.io.IOException;

import com.sun.org.apache.bcel.internal.classfile.ClassParser;
import com.sun.org.apache.bcel.internal.classfile.ConstantValue;
import com.sun.org.apache.bcel.internal.classfile.Field;
import com.sun.org.apache.bcel.internal.classfile.JavaClass;

// CheckStyle:HideUtilityClassConstructorCheck OFF - bc
@@ -40,7 +41,7 @@ public final class JavaClassHelper {
* @return a StringBuffer contains the name=value pairs
* @exception IOException if an error occurs
*/
public static StringBuffer getConstants(byte[] bytes)
public static StringBuffer getConstants(final byte[] bytes)
throws IOException {
final StringBuffer sb = new StringBuffer();
final ByteArrayInputStream bis = new ByteArrayInputStream(bytes);


+ 35
- 35
src/main/org/apache/tools/ant/listener/CommonsLoggingListener.java View File

@@ -20,6 +20,7 @@ package org.apache.tools.ant.listener;

import java.io.PrintStream;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
import org.apache.commons.logging.LogFactory;
import org.apache.tools.ant.BuildEvent;
@@ -29,7 +30,6 @@ import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.UnknownElement;

import sun.rmi.runtime.Log;

/**
* Jakarta Commons Logging listener.
@@ -80,31 +80,31 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
suffix = suffix.replace(' ', '-');
cat = cat + "." + suffix;
}
PrintStream tmpOut = System.out;
PrintStream tmpErr = System.err;
final PrintStream tmpOut = System.out;
final PrintStream tmpErr = System.err;
System.setOut(out);
System.setErr(err);

if (!initialized) {
try {
logFactory = LogFactory.getFactory();
} catch (LogConfigurationException e) {
} catch (final LogConfigurationException e) {
e.printStackTrace(System.err);
return null;
}
}

initialized = true;
Log log = logFactory.getInstance(cat);
final Log log = logFactory.getInstance(cat);
System.setOut(tmpOut);
System.setErr(tmpErr);
return log;
}

/** {@inheritDoc}. */
public void buildStarted(BuildEvent event) {
String categoryString = PROJECT_LOG;
Log log = getLog(categoryString, null);
public void buildStarted(final BuildEvent event) {
final String categoryString = PROJECT_LOG;
final Log log = getLog(categoryString, null);

if (initialized) {
realLog(log, "Build started.", Project.MSG_INFO, null);
@@ -112,10 +112,10 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
}

/** {@inheritDoc}. */
public void buildFinished(BuildEvent event) {
public void buildFinished(final BuildEvent event) {
if (initialized) {
String categoryString = PROJECT_LOG;
Log log = getLog(categoryString, event.getProject().getName());
final String categoryString = PROJECT_LOG;
final Log log = getLog(categoryString, event.getProject().getName());

if (event.getException() == null) {
realLog(log, "Build finished.", Project.MSG_INFO, null);
@@ -130,9 +130,9 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* @see BuildListener#targetStarted
*/
/** {@inheritDoc}. */
public void targetStarted(BuildEvent event) {
public void targetStarted(final BuildEvent event) {
if (initialized) {
Log log = getLog(TARGET_LOG,
final Log log = getLog(TARGET_LOG,
event.getTarget().getName());
// Since task log category includes target, we don't really
// need this message
@@ -145,10 +145,10 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* @see BuildListener#targetFinished
*/
/** {@inheritDoc}. */
public void targetFinished(BuildEvent event) {
public void targetFinished(final BuildEvent event) {
if (initialized) {
String targetName = event.getTarget().getName();
Log log = getLog(TARGET_LOG,
final String targetName = event.getTarget().getName();
final Log log = getLog(TARGET_LOG,
event.getTarget().getName());
if (event.getException() == null) {
realLog(log, "Target end: " + targetName, Project.MSG_DEBUG, null);
@@ -164,17 +164,17 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* @see BuildListener#taskStarted
*/
/** {@inheritDoc}. */
public void taskStarted(BuildEvent event) {
public void taskStarted(final BuildEvent event) {
if (initialized) {
Task task = event.getTask();
final Task task = event.getTask();
Object real = task;
if (task instanceof UnknownElement) {
Object realObj = ((UnknownElement) task).getTask();
final Object realObj = ((UnknownElement) task).getTask();
if (realObj != null) {
real = realObj;
}
}
Log log = getLog(real.getClass().getName(), null);
final Log log = getLog(real.getClass().getName(), null);
if (log.isTraceEnabled()) {
realLog(log, "Task \"" + task.getTaskName() + "\" started ",
Project.MSG_VERBOSE, null);
@@ -186,17 +186,17 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* @see BuildListener#taskFinished
*/
/** {@inheritDoc}. */
public void taskFinished(BuildEvent event) {
public void taskFinished(final BuildEvent event) {
if (initialized) {
Task task = event.getTask();
final Task task = event.getTask();
Object real = task;
if (task instanceof UnknownElement) {
Object realObj = ((UnknownElement) task).getTask();
final Object realObj = ((UnknownElement) task).getTask();
if (realObj != null) {
real = realObj;
}
}
Log log = getLog(real.getClass().getName(), null);
final Log log = getLog(real.getClass().getName(), null);
if (event.getException() == null) {
if (log.isTraceEnabled()) {
realLog(log, "Task \"" + task.getTaskName() + "\" finished.",
@@ -215,7 +215,7 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* @see BuildListener#messageLogged
*/
/** {@inheritDoc}. */
public void messageLogged(BuildEvent event) {
public void messageLogged(final BuildEvent event) {
if (initialized) {
Object categoryObject = event.getTask();
String categoryString = null;
@@ -242,16 +242,16 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {

}

Log log = getLog(categoryString, categoryDetail);
int priority = event.getPriority();
String message = event.getMessage();
final Log log = getLog(categoryString, categoryDetail);
final int priority = event.getPriority();
final String message = event.getMessage();
realLog(log, message, priority , null);
}
}

private void realLog(Log log, String message, int priority, Throwable t) {
PrintStream tmpOut = System.out;
PrintStream tmpErr = System.err;
private void realLog(final Log log, final String message, final int priority, final Throwable t) {
final PrintStream tmpOut = System.out;
final PrintStream tmpErr = System.err;
System.setOut(out);
System.setErr(err);
switch (priority) {
@@ -300,7 +300,7 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* This is not used, the logger config is used instead.
* @param level ignored
*/
public void setMessageOutputLevel(int level) {
public void setMessageOutputLevel(final int level) {
// Use the logger config
}

@@ -308,7 +308,7 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* Set the output print stream.
* @param output the output stream
*/
public void setOutputPrintStream(PrintStream output) {
public void setOutputPrintStream(final PrintStream output) {
this.out = output;
}

@@ -317,7 +317,7 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* This is ignored.
* @param emacsMode ignored
*/
public void setEmacsMode(boolean emacsMode) {
public void setEmacsMode(final boolean emacsMode) {
// Doesn't make sense for c-l. Use the logger config
}

@@ -325,7 +325,7 @@ public class CommonsLoggingListener implements BuildListener, BuildLogger {
* Set the error print stream.
* @param err the error stream
*/
public void setErrorPrintStream(PrintStream err) {
public void setErrorPrintStream(final PrintStream err) {
this.err = err;
}



+ 20
- 19
src/main/org/apache/tools/ant/listener/Log4jListener.java View File

@@ -18,6 +18,7 @@

package org.apache.tools.ant.listener;

import org.apache.log4j.Logger;
import org.apache.log4j.helpers.NullEnumeration;
import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildListener;
@@ -44,8 +45,8 @@ public class Log4jListener implements BuildListener {
* Construct the listener and make sure there is a valid appender.
*/
public Log4jListener() {
Logger log = Logger.getLogger(LOG_ANT);
Logger rootLog = Logger.getRootLogger();
final Logger log = Logger.getLogger(LOG_ANT);
final Logger rootLog = Logger.getRootLogger();
initialized = !(rootLog.getAllAppenders() instanceof NullEnumeration);
if (!initialized) {
log.error("No log4j.properties in build area");
@@ -56,9 +57,9 @@ public class Log4jListener implements BuildListener {
* @see BuildListener#buildStarted
*/
/** {@inheritDoc}. */
public void buildStarted(BuildEvent event) {
public void buildStarted(final BuildEvent event) {
if (initialized) {
Logger log = Logger.getLogger(Project.class.getName());
final Logger log = Logger.getLogger(Project.class.getName());
log.info("Build started.");
}
}
@@ -67,9 +68,9 @@ public class Log4jListener implements BuildListener {
* @see BuildListener#buildFinished
*/
/** {@inheritDoc}. */
public void buildFinished(BuildEvent event) {
public void buildFinished(final BuildEvent event) {
if (initialized) {
Logger log = Logger.getLogger(Project.class.getName());
final Logger log = Logger.getLogger(Project.class.getName());
if (event.getException() == null) {
log.info("Build finished.");
} else {
@@ -82,9 +83,9 @@ public class Log4jListener implements BuildListener {
* @see BuildListener#targetStarted
*/
/** {@inheritDoc}. */
public void targetStarted(BuildEvent event) {
public void targetStarted(final BuildEvent event) {
if (initialized) {
Logger log = Logger.getLogger(Target.class.getName());
final Logger log = Logger.getLogger(Target.class.getName());
log.info("Target \"" + event.getTarget().getName() + "\" started.");
}
}
@@ -93,10 +94,10 @@ public class Log4jListener implements BuildListener {
* @see BuildListener#targetFinished
*/
/** {@inheritDoc}. */
public void targetFinished(BuildEvent event) {
public void targetFinished(final BuildEvent event) {
if (initialized) {
String targetName = event.getTarget().getName();
Logger cat = Logger.getLogger(Target.class.getName());
final String targetName = event.getTarget().getName();
final Logger cat = Logger.getLogger(Target.class.getName());
if (event.getException() == null) {
cat.info("Target \"" + targetName + "\" finished.");
} else {
@@ -110,10 +111,10 @@ public class Log4jListener implements BuildListener {
* @see BuildListener#taskStarted
*/
/** {@inheritDoc}. */
public void taskStarted(BuildEvent event) {
public void taskStarted(final BuildEvent event) {
if (initialized) {
Task task = event.getTask();
Logger log = Logger.getLogger(task.getClass().getName());
final Task task = event.getTask();
final Logger log = Logger.getLogger(task.getClass().getName());
log.info("Task \"" + task.getTaskName() + "\" started.");
}
}
@@ -122,10 +123,10 @@ public class Log4jListener implements BuildListener {
* @see BuildListener#taskFinished
*/
/** {@inheritDoc}. */
public void taskFinished(BuildEvent event) {
public void taskFinished(final BuildEvent event) {
if (initialized) {
Task task = event.getTask();
Logger log = Logger.getLogger(task.getClass().getName());
final Task task = event.getTask();
final Logger log = Logger.getLogger(task.getClass().getName());
if (event.getException() == null) {
log.info("Task \"" + task.getTaskName() + "\" finished.");
} else {
@@ -139,7 +140,7 @@ public class Log4jListener implements BuildListener {
* @see BuildListener#messageLogged
*/
/** {@inheritDoc}. */
public void messageLogged(BuildEvent event) {
public void messageLogged(final BuildEvent event) {
if (initialized) {
Object categoryObject = event.getTask();
if (categoryObject == null) {
@@ -149,7 +150,7 @@ public class Log4jListener implements BuildListener {
}
}

Logger log
final Logger log
= Logger.getLogger(categoryObject.getClass().getName());
switch (event.getPriority()) {
case Project.MSG_ERR:


+ 41
- 39
src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java View File

@@ -25,7 +25,6 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.PasswordAuthentication;
import java.security.Provider;
import java.security.Security;
import java.util.Enumeration;
@@ -37,19 +36,23 @@ import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.SendFailedException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;

import sun.rmi.transport.Transport;

import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;
import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart;

/**
* Uses the JavaMail classes to send Mime format email.
@@ -83,7 +86,7 @@ public class MimeMailer extends Mailer {
throw new IOException("No data");
}
if (out != null) {
String encodedOut = out.toString(charset);
final String encodedOut = out.toString(charset);
data = (data != null) ? data.concat(encodedOut) : encodedOut;
out = null;
}
@@ -95,7 +98,7 @@ public class MimeMailer extends Mailer {
return out;
}

public void setContentType(String type) {
public void setContentType(final String type) {
this.type = type.toLowerCase(Locale.ENGLISH);
}

@@ -113,7 +116,7 @@ public class MimeMailer extends Mailer {
return "StringDataSource";
}

public void setCharset(String charset) {
public void setCharset(final String charset) {
this.charset = charset;
}

@@ -129,7 +132,7 @@ public class MimeMailer extends Mailer {
*/
public void send() {
try {
Properties props = new Properties();
final Properties props = new Properties();

props.put("mail.smtp.host", host);
props.put("mail.smtp.port", String.valueOf(port));
@@ -141,10 +144,10 @@ public class MimeMailer extends Mailer {
Authenticator auth = null;
if (SSL) {
try {
Provider p = (Provider) Class.forName(
final Provider p = (Provider) Class.forName(
"com.sun.net.ssl.internal.ssl.Provider").newInstance();
Security.addProvider(p);
} catch (Exception e) {
} catch (final Exception e) {
throw new BuildException("could not instantiate ssl "
+ "security provider, check that you have JSSE in "
+ "your classpath");
@@ -169,8 +172,8 @@ public class MimeMailer extends Mailer {
sesh = Session.getInstance(props, auth);

//create the message
MimeMessage msg = new MimeMessage(sesh);
MimeMultipart attachments = new MimeMultipart();
final MimeMessage msg = new MimeMessage(sesh);
final MimeMultipart attachments = new MimeMultipart();

//set the sender
if (from.getName() == null) {
@@ -204,7 +207,7 @@ public class MimeMailer extends Mailer {
}
}
// Using javax.activation.DataSource paradigm
StringDataSource sds = new StringDataSource();
final StringDataSource sds = new StringDataSource();
sds.setContentType(message.getMimeType());
sds.setCharset(charset);

@@ -214,23 +217,23 @@ public class MimeMailer extends Mailer {
msg.addHeader("Date", getDate());

if (headers != null) {
for (Iterator iter = headers.iterator(); iter.hasNext();) {
Header h = (Header) iter.next();
for (final Iterator iter = headers.iterator(); iter.hasNext();) {
final Header h = (Header) iter.next();
msg.addHeader(h.getName(), h.getValue());
}
}
PrintStream out = new PrintStream(sds.getOutputStream());
final PrintStream out = new PrintStream(sds.getOutputStream());
message.print(out);
out.close();

MimeBodyPart textbody = new MimeBodyPart();
final MimeBodyPart textbody = new MimeBodyPart();
textbody.setDataHandler(new DataHandler(sds));
attachments.addBodyPart(textbody);

Enumeration e = files.elements();
final Enumeration e = files.elements();

while (e.hasMoreElements()) {
File file = (File) e.nextElement();
final File file = (File) e.nextElement();

MimeBodyPart body;

@@ -240,8 +243,8 @@ public class MimeMailer extends Mailer {
+ "\" does not exist or is not "
+ "readable.");
}
FileDataSource fileData = new FileDataSource(file);
DataHandler fileDataHandler = new DataHandler(fileData);
final FileDataSource fileData = new FileDataSource(file);
final DataHandler fileDataHandler = new DataHandler(fileData);

body.setDataHandler(fileDataHandler);
body.setFileName(file.getName());
@@ -250,10 +253,10 @@ public class MimeMailer extends Mailer {
msg.setContent(attachments);
try {
// Send the message using SMTP, or SMTPS if the host uses SSL
Transport transport = sesh.getTransport(SSL ? "smtps" : "smtp");
final Transport transport = sesh.getTransport(SSL ? "smtps" : "smtp");
transport.connect(host, user, password);
transport.sendMessage(msg, msg.getAllRecipients());
} catch (SendFailedException sfe) {
} catch (final SendFailedException sfe) {
if (!shouldIgnoreInvalidRecipients()) {
throw new BuildException(GENERIC_ERROR, sfe);
} else if (sfe.getValidSentAddresses() == null
@@ -277,22 +280,22 @@ public class MimeMailer extends Mailer {
}
}
}
} catch (MessagingException e) {
} catch (final MessagingException e) {
throw new BuildException(GENERIC_ERROR, e);
} catch (IOException e) {
} catch (final IOException e) {
throw new BuildException(GENERIC_ERROR, e);
}
}

private static InternetAddress[] internetAddresses(Vector list)
private static InternetAddress[] internetAddresses(final Vector list)
throws AddressException, UnsupportedEncodingException {
final int size = list.size();
InternetAddress[] addrs = new InternetAddress[size];
final InternetAddress[] addrs = new InternetAddress[size];

for (int i = 0; i < size; ++i) {
EmailAddress addr = (EmailAddress) list.elementAt(i);
final EmailAddress addr = (EmailAddress) list.elementAt(i);

String name = addr.getName();
final String name = addr.getName();
addrs[i] = (name == null)
? new InternetAddress(addr.getAddress())
: new InternetAddress(addr.getAddress(), name);
@@ -300,23 +303,23 @@ public class MimeMailer extends Mailer {
return addrs;
}

private String parseCharSetFromMimeType(String type) {
private String parseCharSetFromMimeType(final String type) {
if (type == null) {
return null;
}
int pos = type.indexOf("charset");
final int pos = type.indexOf("charset");
if (pos < 0) {
return null;
}
// Assuming mime type in form "text/XXXX; charset=XXXXXX"
StringTokenizer token = new StringTokenizer(type.substring(pos), "=; ");
final StringTokenizer token = new StringTokenizer(type.substring(pos), "=; ");
token.nextToken(); // Skip 'charset='
return token.nextToken();
}

private void didntReach(Address addr, String category,
MessagingException ex) {
String msg = "Failed to send mail to " + category + " address "
private void didntReach(final Address addr, final String category,
final MessagingException ex) {
final String msg = "Failed to send mail to " + category + " address "
+ addr + " because of " + ex.getMessage();
if (task != null) {
task.log(msg, Project.MSG_WARN);
@@ -328,12 +331,11 @@ public class MimeMailer extends Mailer {
static class SimpleAuthenticator extends Authenticator {
private String user = null;
private String password = null;
public SimpleAuthenticator(String user, String password) {
public SimpleAuthenticator(final String user, final String password) {
this.user = user;
this.password = password;
}
public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(user, password);
}
}


+ 6
- 6
src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java View File

@@ -26,8 +26,8 @@ import javax.xml.transform.Transformer;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.XSLTProcess;
import org.apache.xalan.trace.PrintTraceListener;
import org.apache.xalan.transformer.TransformerImpl;

import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl;

/**
* Sets up trace support for a given transformer.
@@ -35,11 +35,11 @@ import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl;
* @since Ant 1.8.0
*/
public class Xalan2TraceSupport implements XSLTTraceSupport {
public void configureTrace(Transformer t,
XSLTProcess.TraceConfiguration conf) {
public void configureTrace(final Transformer t,
final XSLTProcess.TraceConfiguration conf) {
if (t instanceof TransformerImpl && conf != null) {
PrintWriter w = new PrintWriter(conf.getOutputStream(), false);
PrintTraceListener tl = new PrintTraceListener(w);
final PrintWriter w = new PrintWriter(conf.getOutputStream(), false);
final PrintTraceListener tl = new PrintTraceListener(w);
tl.m_traceElements = conf.getElements();
tl.m_traceExtension = conf.getExtension();
tl.m_traceGeneration = conf.getGeneration();
@@ -47,7 +47,7 @@ public class Xalan2TraceSupport implements XSLTTraceSupport {
tl.m_traceTemplates = conf.getTemplates();
try {
((TransformerImpl) t).getTraceManager().addTraceListener(tl);
} catch (TooManyListenersException tml) {
} catch (final TooManyListenersException tml) {
throw new BuildException(tml);
}
}


+ 45
- 41
src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.java View File

@@ -61,7 +61,7 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
private static DocumentBuilder getDocumentBuilder() {
try {
return DocumentBuilderFactory.newInstance().newDocumentBuilder();
} catch (Exception exc) {
} catch (final Exception exc) {
throw new ExceptionInInitializerError(exc);
}
}
@@ -70,10 +70,12 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* The XML document.
*/
private Document doc;

/**
* The wrapper for the whole testsuite.
*/
private Element rootElement;

/**
* Element for the current test.
*
@@ -82,23 +84,25 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* so we can't easily match Test objects without manually iterating over all keys and checking
* individual fields.
*/
private Hashtable<String, Element> testElements = new Hashtable<String, Element>();
private final Hashtable<String, Element> testElements = new Hashtable<String, Element>();

/**
* tests that failed.
*/
private Hashtable failedTests = new Hashtable();
private final Hashtable failedTests = new Hashtable();

/**
* Tests that were skipped.
*/
private Hashtable<String, Test> skippedTests = new Hashtable<String, Test>();
private final Hashtable<String, Test> skippedTests = new Hashtable<String, Test>();
/**
* Tests that were ignored. See the note above about the key being a bit of a hack.
*/
private Hashtable<String, Test> ignoredTests = new Hashtable<String, Test>();
private final Hashtable<String, Test> ignoredTests = new Hashtable<String, Test>();
/**
* Timing helper.
*/
private Hashtable<String, Long> testStarts = new Hashtable<String, Long>();
private final Hashtable<String, Long> testStarts = new Hashtable<String, Long>();
/**
* Where to write the log to.
*/
@@ -109,17 +113,17 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
}

/** {@inheritDoc}. */
public void setOutput(OutputStream out) {
public void setOutput(final OutputStream out) {
this.out = out;
}

/** {@inheritDoc}. */
public void setSystemOutput(String out) {
public void setSystemOutput(final String out) {
formatOutput(SYSTEM_OUT, out);
}

/** {@inheritDoc}. */
public void setSystemError(String out) {
public void setSystemError(final String out) {
formatOutput(SYSTEM_ERR, out);
}

@@ -127,10 +131,10 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* The whole testsuite started.
* @param suite the testsuite.
*/
public void startTestSuite(JUnitTest suite) {
public void startTestSuite(final JUnitTest suite) {
doc = getDocumentBuilder().newDocument();
rootElement = doc.createElement(TESTSUITE);
String n = suite.getName();
final String n = suite.getName();
rootElement.setAttribute(ATTR_NAME, n == null ? UNKNOWN : n);

//add the timestamp
@@ -141,14 +145,14 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
rootElement.setAttribute(HOSTNAME, getHostname());

// Output properties
Element propsElement = doc.createElement(PROPERTIES);
final Element propsElement = doc.createElement(PROPERTIES);
rootElement.appendChild(propsElement);
Properties props = suite.getProperties();
final Properties props = suite.getProperties();
if (props != null) {
Enumeration e = props.propertyNames();
final Enumeration e = props.propertyNames();
while (e.hasMoreElements()) {
String name = (String) e.nextElement();
Element propElement = doc.createElement(PROPERTY);
final String name = (String) e.nextElement();
final Element propElement = doc.createElement(PROPERTY);
propElement.setAttribute(ATTR_NAME, name);
propElement.setAttribute(ATTR_VALUE, props.getProperty(name));
propsElement.appendChild(propElement);
@@ -163,11 +167,11 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
private String getHostname() {
String hostname = "localhost";
try {
InetAddress localHost = InetAddress.getLocalHost();
final InetAddress localHost = InetAddress.getLocalHost();
if (localHost != null) {
hostname = localHost.getHostName();
}
} catch (UnknownHostException e) {
} catch (final UnknownHostException e) {
// fall back to default 'localhost'
}
return hostname;
@@ -178,7 +182,7 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* @param suite the testsuite.
* @throws BuildException on error.
*/
public void endTestSuite(JUnitTest suite) throws BuildException {
public void endTestSuite(final JUnitTest suite) throws BuildException {
rootElement.setAttribute(ATTR_TESTS, "" + suite.runCount());
rootElement.setAttribute(ATTR_FAILURES, "" + suite.failureCount());
rootElement.setAttribute(ATTR_ERRORS, "" + suite.errorCount());
@@ -191,13 +195,13 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
wri = new BufferedWriter(new OutputStreamWriter(out, "UTF8"));
wri.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
(new DOMElementWriter()).write(rootElement, wri, 0, " ");
} catch (IOException exc) {
} catch (final IOException exc) {
throw new BuildException("Unable to write log file", exc);
} finally {
if (wri != null) {
try {
wri.flush();
} catch (IOException ex) {
} catch (final IOException ex) {
// ignore
}
}
@@ -214,11 +218,11 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* <p>A new Test is started.
* @param t the test.
*/
public void startTest(Test t) {
public void startTest(final Test t) {
testStarts.put(createDescription(t), System.currentTimeMillis());
}

private static String createDescription(Test test) throws BuildException {
private static String createDescription(final Test test) throws BuildException {
return JUnitVersionHelper.getTestCaseName(test) + "(" + JUnitVersionHelper.getTestCaseClassName(test) + ")";
}

@@ -228,8 +232,8 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* <p>A Test is finished.
* @param test the test.
*/
public void endTest(Test test) {
String testDescription = createDescription(test);
public void endTest(final Test test) {
final String testDescription = createDescription(test);

// Fix for bug #5637 - if a junit.extensions.TestSetup is
// used and throws an exception during setUp then startTest
@@ -240,7 +244,7 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
Element currentTest;
if (!failedTests.containsKey(test) && !skippedTests.containsKey(testDescription) && !ignoredTests.containsKey(testDescription)) {
currentTest = doc.createElement(TESTCASE);
String n = JUnitVersionHelper.getTestCaseName(test);
final String n = JUnitVersionHelper.getTestCaseName(test);
currentTest.setAttribute(ATTR_NAME,
n == null ? UNKNOWN : n);
// a TestSuite can contain Tests from multiple classes,
@@ -253,7 +257,7 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
currentTest = testElements.get(testDescription);
}

Long l = testStarts.get(createDescription(test));
final Long l = testStarts.get(createDescription(test));
currentTest.setAttribute(ATTR_TIME,
"" + ((System.currentTimeMillis() - l) / ONE_SECOND));
}
@@ -265,7 +269,7 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* @param test the test.
* @param t the exception.
*/
public void addFailure(Test test, Throwable t) {
public void addFailure(final Test test, final Throwable t) {
formatError(FAILURE, test, t);
}

@@ -276,7 +280,7 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* @param test the test.
* @param t the assertion.
*/
public void addFailure(Test test, AssertionFailedError t) {
public void addFailure(final Test test, final AssertionFailedError t) {
addFailure(test, (Throwable) t);
}

@@ -287,17 +291,17 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
* @param test the test.
* @param t the error.
*/
public void addError(Test test, Throwable t) {
public void addError(final Test test, final Throwable t) {
formatError(ERROR, test, t);
}

private void formatError(String type, Test test, Throwable t) {
private void formatError(final String type, final Test test, final Throwable t) {
if (test != null) {
endTest(test);
failedTests.put(test, test);
}

Element nested = doc.createElement(type);
final Element nested = doc.createElement(type);
Element currentTest;
if (test != null) {
currentTest = testElements.get(createDescription(test));
@@ -307,24 +311,24 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan

currentTest.appendChild(nested);

String message = t.getMessage();
final String message = t.getMessage();
if (message != null && message.length() > 0) {
nested.setAttribute(ATTR_MESSAGE, t.getMessage());
}
nested.setAttribute(ATTR_TYPE, t.getClass().getName());

String strace = JUnitTestRunner.getFilteredTrace(t);
Text trace = doc.createTextNode(strace);
final String strace = JUnitTestRunner.getFilteredTrace(t);
final Text trace = doc.createTextNode(strace);
nested.appendChild(trace);
}

private void formatOutput(String type, String output) {
Element nested = doc.createElement(type);
private void formatOutput(final String type, final String output) {
final Element nested = doc.createElement(type);
rootElement.appendChild(nested);
nested.appendChild(doc.createCDATASection(output));
}

public void testIgnored(Test test) {
public void testIgnored(final Test test) {
formatSkip(test, JUnitVersionHelper.getIgnoreMessage(test));
if (test != null) {
ignoredTests.put(createDescription(test), test);
@@ -332,12 +336,12 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan
}


public void formatSkip(Test test, String message) {
public void formatSkip(final Test test, final String message) {
if (test != null) {
endTest(test);
}

Element nested = doc.createElement("skipped");
final Element nested = doc.createElement("skipped");

if (message != null) {
nested.setAttribute("message", message);
@@ -354,7 +358,7 @@ public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstan

}

public void testAssumptionFailure(Test test, Throwable failure) {
public void testAssumptionFailure(final Test test, final Throwable failure) {
formatSkip(test, failure.getMessage());
skippedTests.put(createDescription(test), test);



+ 27
- 25
src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java View File

@@ -25,9 +25,11 @@ import java.text.NumberFormat;

import org.apache.tools.ant.BuildException;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpProgressMonitor;

/**
@@ -36,10 +38,10 @@ import com.jcraft.jsch.SftpProgressMonitor;
public abstract class AbstractSshMessage {
private static final double ONE_SECOND = 1000.0;

private Session session;
private boolean verbose;
private final Session session;
private final boolean verbose;
private LogListener listener = new LogListener() {
public void log(String message) {
public void log(final String message) {
// do nothing;
}
};
@@ -48,7 +50,7 @@ public abstract class AbstractSshMessage {
* Constructor for AbstractSshMessage
* @param session the ssh session to use
*/
public AbstractSshMessage(Session session) {
public AbstractSshMessage(final Session session) {
this(false, session);
}

@@ -58,7 +60,7 @@ public abstract class AbstractSshMessage {
* @param session the ssh session to use
* @since Ant 1.6.2
*/
public AbstractSshMessage(boolean verbose, Session session) {
public AbstractSshMessage(final boolean verbose, final Session session) {
this.verbose = verbose;
this.session = session;
}
@@ -69,8 +71,8 @@ public abstract class AbstractSshMessage {
* @return the channel
* @throws JSchException on error
*/
protected Channel openExecChannel(String command) throws JSchException {
ChannelExec channel = (ChannelExec) session.openChannel("exec");
protected Channel openExecChannel(final String command) throws JSchException {
final ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand(command);

return channel;
@@ -82,7 +84,7 @@ public abstract class AbstractSshMessage {
* @throws JSchException on error
*/
protected ChannelSftp openSftpChannel() throws JSchException {
ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
final ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");

return channel;
}
@@ -92,8 +94,8 @@ public abstract class AbstractSshMessage {
* @param out the output stream to use
* @throws IOException on error
*/
protected void sendAck(OutputStream out) throws IOException {
byte[] buf = new byte[1];
protected void sendAck(final OutputStream out) throws IOException {
final byte[] buf = new byte[1];
buf[0] = 0;
out.write(buf);
out.flush();
@@ -106,9 +108,9 @@ public abstract class AbstractSshMessage {
* @throws IOException on I/O error
* @throws BuildException on other errors
*/
protected void waitForAck(InputStream in)
protected void waitForAck(final InputStream in)
throws IOException, BuildException {
int b = in.read();
final int b = in.read();

// b may be 0 for success,
// 1 for error,
@@ -118,7 +120,7 @@ public abstract class AbstractSshMessage {
// didn't receive any response
throw new BuildException("No response from server");
} else if (b != 0) {
StringBuffer sb = new StringBuffer();
final StringBuffer sb = new StringBuffer();

int c = in.read();
while (c > 0 && c != '\n') {
@@ -150,7 +152,7 @@ public abstract class AbstractSshMessage {
* Set a log listener.
* @param aListener the log listener
*/
public void setLogListener(LogListener aListener) {
public void setLogListener(final LogListener aListener) {
listener = aListener;
}

@@ -158,7 +160,7 @@ public abstract class AbstractSshMessage {
* Log a message to the log listener.
* @param message the message to log
*/
protected void log(String message) {
protected void log(final String message) {
listener.log(message);
}

@@ -168,11 +170,11 @@ public abstract class AbstractSshMessage {
* @param timeEnded the finishing time
* @param totalLength the total length
*/
protected void logStats(long timeStarted,
long timeEnded,
long totalLength) {
double duration = (timeEnded - timeStarted) / ONE_SECOND;
NumberFormat format = NumberFormat.getNumberInstance();
protected void logStats(final long timeStarted,
final long timeEnded,
final long totalLength) {
final double duration = (timeEnded - timeStarted) / ONE_SECOND;
final NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2);
format.setMinimumFractionDigits(1);
listener.log("File transfer time: " + format.format(duration)
@@ -197,11 +199,11 @@ public abstract class AbstractSshMessage {
* @param percentTransmitted the current percent transmitted
* @return the percent that the file is of the total
*/
protected final int trackProgress(long filesize, long totalLength,
int percentTransmitted) {
protected final int trackProgress(final long filesize, final long totalLength,
final int percentTransmitted) {

// CheckStyle:MagicNumber OFF
int percent = (int) Math.round(Math.floor((totalLength
final int percent = (int) Math.round(Math.floor((totalLength
/ (double) filesize) * 100));

if (percent > percentTransmitted) {
@@ -246,13 +248,13 @@ public abstract class AbstractSshMessage {
private long totalLength = 0;
private int percentTransmitted = 0;

public void init(int op, String src, String dest, long max) {
public void init(final int op, final String src, final String dest, final long max) {
initFileSize = max;
totalLength = 0;
percentTransmitted = 0;
}

public boolean count(long len) {
public boolean count(final long len) {
totalLength += len;
percentTransmitted = trackProgress(initFileSize,
totalLength,


+ 16
- 15
src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java View File

@@ -24,6 +24,7 @@ import org.apache.tools.ant.Task;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

/**
* Base class for Ant tasks using jsch.
@@ -40,7 +41,7 @@ public abstract class SSHBase extends Task implements LogListener {
private int port = SSH_PORT;
private boolean failOnError = true;
private boolean verbose;
private SSHUserInfo userInfo;
private final SSHUserInfo userInfo;

/**
* Constructor for SSHBase.
@@ -55,7 +56,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param host The new host value
*/
public void setHost(String host) {
public void setHost(final String host) {
this.host = host;
}

@@ -73,7 +74,7 @@ public abstract class SSHBase extends Task implements LogListener {
* @param failure if true throw a build exception when a failure occuries,
* otherwise just log the failure and continue
*/
public void setFailonerror(boolean failure) {
public void setFailonerror(final boolean failure) {
failOnError = failure;
}

@@ -90,7 +91,7 @@ public abstract class SSHBase extends Task implements LogListener {
* @param verbose if true output more verbose logging
* @since Ant 1.6.2
*/
public void setVerbose(boolean verbose) {
public void setVerbose(final boolean verbose) {
this.verbose = verbose;
}

@@ -108,7 +109,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param username The new username value
*/
public void setUsername(String username) {
public void setUsername(final String username) {
userInfo.setName(username);
}

@@ -118,7 +119,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param password The new password value
*/
public void setPassword(String password) {
public void setPassword(final String password) {
userInfo.setPassword(password);
}

@@ -127,7 +128,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param keyfile The new keyfile value
*/
public void setKeyfile(String keyfile) {
public void setKeyfile(final String keyfile) {
userInfo.setKeyfile(keyfile);
}

@@ -136,7 +137,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param passphrase The new passphrase value
*/
public void setPassphrase(String passphrase) {
public void setPassphrase(final String passphrase) {
userInfo.setPassphrase(passphrase);
}

@@ -148,7 +149,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param knownHosts a path to the known hosts file.
*/
public void setKnownhosts(String knownHosts) {
public void setKnownhosts(final String knownHosts) {
this.knownHosts = knownHosts;
}

@@ -157,7 +158,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param yesOrNo if true trust the identity of unknown hosts.
*/
public void setTrust(boolean yesOrNo) {
public void setTrust(final boolean yesOrNo) {
userInfo.setTrust(yesOrNo);
}

@@ -166,7 +167,7 @@ public abstract class SSHBase extends Task implements LogListener {
*
* @param port port number of remote host.
*/
public void setPort(int port) {
public void setPort(final int port) {
this.port = port;
}

@@ -195,14 +196,14 @@ public abstract class SSHBase extends Task implements LogListener {
* @throws JSchException on error
*/
protected Session openSession() throws JSchException {
JSch jsch = new JSch();
final JSch jsch = new JSch();
final SSHBase base = this;
if(verbose) {
JSch.setLogger(new com.jcraft.jsch.Logger(){
public boolean isEnabled(int level){
public boolean isEnabled(final int level){
return true;
}
public void log(int level, String message){
public void log(final int level, final String message){
base.log(message, Project.MSG_INFO);
}
});
@@ -216,7 +217,7 @@ public abstract class SSHBase extends Task implements LogListener {
jsch.setKnownHosts(knownHosts);
}

Session session = jsch.getSession(userInfo.getName(), host, port);
final Session session = jsch.getSession(userInfo.getName(), host, port);
session.setConfig("PreferredAuthentications",
"publickey,keyboard-interactive,password");
session.setUserInfo(userInfo);


+ 1
- 0
src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java View File

@@ -41,6 +41,7 @@ import org.apache.tools.ant.util.TeeOutputStream;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

/**
* Executes a command on a remote machine via ssh.


+ 44
- 43
src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHSession.java View File

@@ -31,6 +31,8 @@ import org.apache.tools.ant.Task;
import org.apache.tools.ant.TaskContainer;

import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;


/**
* Establishes an ssh session with a remote machine, optionally
@@ -43,10 +45,10 @@ public class SSHSession extends SSHBase {
/** units are milliseconds, default is 0=infinite */
private long maxwait = 0;

private Vector localTunnels = new Vector();
private Set localPortsUsed = new TreeSet();
private Vector remoteTunnels = new Vector();
private Set remotePortsUsed = new TreeSet();
private final Vector localTunnels = new Vector();
private final Set localPortsUsed = new TreeSet();
private final Vector remoteTunnels = new Vector();
private final Set remotePortsUsed = new TreeSet();
private NestedSequential nestedSequential = null;

private static final String TIMEOUT_MESSAGE =
@@ -54,7 +56,7 @@ public class SSHSession extends SSHBase {


/** Optional Vector holding the nested tasks */
private Vector nestedTasks = new Vector();
private final Vector nestedTasks = new Vector();

/**
* Add a nested task to Sequential.
@@ -62,7 +64,7 @@ public class SSHSession extends SSHBase {
* @param nestedTask Nested task to execute Sequential
* <p>
*/
public void addTask(Task nestedTask) {
public void addTask(final Task nestedTask) {
nestedTasks.addElement(nestedTask);
}

@@ -73,7 +75,7 @@ public class SSHSession extends SSHBase {
*
* @param timeout The new timeout value in seconds
*/
public void setTimeout(long timeout) {
public void setTimeout(final long timeout) {
maxwait = timeout;
}

@@ -84,15 +86,15 @@ public class SSHSession extends SSHBase {
* @param tunnels a comma-delimited list of lport:rhost:rport
* tunnel specifications
*/
public void setLocaltunnels(String tunnels) {
String[] specs = tunnels.split(", ");
public void setLocaltunnels(final String tunnels) {
final String[] specs = tunnels.split(", ");
for (int i = 0; i < specs.length; i++) {
if (specs[i].length() > 0) {
String[] spec = specs[i].split(":", 3);
int lport = Integer.parseInt(spec[0]);
String rhost = spec[1];
int rport = Integer.parseInt(spec[2]);
LocalTunnel tunnel = createLocalTunnel();
final String[] spec = specs[i].split(":", 3);
final int lport = Integer.parseInt(spec[0]);
final String rhost = spec[1];
final int rport = Integer.parseInt(spec[2]);
final LocalTunnel tunnel = createLocalTunnel();
tunnel.setLPort(lport);
tunnel.setRHost(rhost);
tunnel.setRPort(rport);
@@ -107,15 +109,15 @@ public class SSHSession extends SSHBase {
* @param tunnels a comma-delimited list of rport:lhost:lport
* tunnel specifications
*/
public void setRemotetunnels(String tunnels) {
String[] specs = tunnels.split(", ");
public void setRemotetunnels(final String tunnels) {
final String[] specs = tunnels.split(", ");
for (int i = 0; i < specs.length; i++) {
if (specs[i].length() > 0) {
String[] spec = specs[i].split(":", 3);
int rport = Integer.parseInt(spec[0]);
String lhost = spec[1];
int lport = Integer.parseInt(spec[2]);
RemoteTunnel tunnel = createRemoteTunnel();
final String[] spec = specs[i].split(":", 3);
final int rport = Integer.parseInt(spec[0]);
final String lhost = spec[1];
final int lport = Integer.parseInt(spec[2]);
final RemoteTunnel tunnel = createRemoteTunnel();
tunnel.setRPort(rport);
tunnel.setLHost(lhost);
tunnel.setLPort(lport);
@@ -153,28 +155,28 @@ public class SSHSession extends SSHBase {
session = openSession();
session.setTimeout((int) maxwait);

for (Iterator i = localTunnels.iterator(); i.hasNext();) {
LocalTunnel tunnel = (LocalTunnel) i.next();
for (final Iterator i = localTunnels.iterator(); i.hasNext();) {
final LocalTunnel tunnel = (LocalTunnel) i.next();
session.setPortForwardingL(tunnel.getLPort(),
tunnel.getRHost(),
tunnel.getRPort());
}

for (Iterator i = remoteTunnels.iterator(); i.hasNext();) {
RemoteTunnel tunnel = (RemoteTunnel) i.next();
for (final Iterator i = remoteTunnels.iterator(); i.hasNext();) {
final RemoteTunnel tunnel = (RemoteTunnel) i.next();
session.setPortForwardingR(tunnel.getRPort(),
tunnel.getLHost(),
tunnel.getLPort());
}

for (Iterator i = nestedSequential.getNested().iterator();
for (final Iterator i = nestedSequential.getNested().iterator();
i.hasNext();) {
Task nestedTask = (Task) i.next();
final Task nestedTask = (Task) i.next();
nestedTask.perform();
}
// completed successfully

} catch (JSchException e) {
} catch (final JSchException e) {
if (e.getMessage().indexOf("session is down") >= 0) {
if (getFailonerror()) {
throw new BuildException(TIMEOUT_MESSAGE, e);
@@ -189,10 +191,10 @@ public class SSHSession extends SSHBase {
Project.MSG_ERR);
}
}
} catch (BuildException e) {
} catch (final BuildException e) {
// avoid wrapping it into yet another BuildException further down
throw e;
} catch (Exception e) {
} catch (final Exception e) {
if (getFailonerror()) {
throw new BuildException(e);
} else {
@@ -206,13 +208,13 @@ public class SSHSession extends SSHBase {
}

public LocalTunnel createLocalTunnel() {
LocalTunnel tunnel = new LocalTunnel();
final LocalTunnel tunnel = new LocalTunnel();
localTunnels.add(tunnel);
return tunnel;
}

public RemoteTunnel createRemoteTunnel() {
RemoteTunnel tunnel = new RemoteTunnel();
final RemoteTunnel tunnel = new RemoteTunnel();
remoteTunnels.add(tunnel);
return tunnel;
}
@@ -223,8 +225,8 @@ public class SSHSession extends SSHBase {
int lport = 0;
String rhost = null;
int rport = 0;
public void setLPort(int lport) {
Integer portKey = new Integer(lport);
public void setLPort(final int lport) {
final Integer portKey = new Integer(lport);
if (localPortsUsed.contains(portKey)) {
throw new BuildException("Multiple local tunnels defined to"
+ " use same local port " + lport);
@@ -232,8 +234,8 @@ public class SSHSession extends SSHBase {
localPortsUsed.add(portKey);
this.lport = lport;
}
public void setRHost(String rhost) { this.rhost = rhost; }
public void setRPort(int rport) { this.rport = rport; }
public void setRHost(final String rhost) { this.rhost = rhost; }
public void setRPort(final int rport) { this.rport = rport; }
public int getLPort() {
if (lport == 0) {
throw new BuildException("lport is required for LocalTunnel.");
@@ -260,10 +262,10 @@ public class SSHSession extends SSHBase {
int lport = 0;
String lhost = null;
int rport = 0;
public void setLPort(int lport) { this.lport = lport; }
public void setLHost(String lhost) { this.lhost = lhost; }
public void setRPort(int rport) {
Integer portKey = new Integer(rport);
public void setLPort(final int lport) { this.lport = lport; }
public void setLHost(final String lhost) { this.lhost = lhost; }
public void setRPort(final int rport) {
final Integer portKey = new Integer(rport);
if (remotePortsUsed.contains(portKey)) {
throw new BuildException("Multiple remote tunnels defined to"
+ " use same remote port " + rport);
@@ -309,15 +311,14 @@ public class SSHSession extends SSHBase {
* This is a simple task container.
*/
public static class NestedSequential implements TaskContainer {
private List<Task> nested = new ArrayList<Task>();
private final List<Task> nested = new ArrayList<Task>();

/**
* Add a task or type to the container.
*
* @param task an unknown element.
*/
@Override
public void addTask(Task task) {
public void addTask(final Task task) {
nested.add(task);
}



+ 41
- 40
src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java View File

@@ -31,6 +31,7 @@ import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.FileSet;

import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

/**
* Ant task for sending files to remote machine over ssh/scp.
@@ -61,7 +62,7 @@ public class Scp extends SSHBase {
* <i>user:password@host:/directory/path/*</i><br>
* @param aFromUri a string representing the file to transfer.
*/
public void setFile(String aFromUri) {
public void setFile(final String aFromUri) {
setFromUri(aFromUri);
this.isFromRemote = isRemoteUri(this.fromUri);
}
@@ -75,7 +76,7 @@ public class Scp extends SSHBase {

* @param aToUri a string representing the target of the copy.
*/
public void setTodir(String aToUri) {
public void setTodir(final String aToUri) {
setToUri(aToUri);
this.isToRemote = isRemoteUri(this.toUri);
}
@@ -87,7 +88,7 @@ public class Scp extends SSHBase {
* @param aFromUri a string representing the source of the copy.
* @since Ant 1.6.2
*/
public void setLocalFile(String aFromUri) {
public void setLocalFile(final String aFromUri) {
setFromUri(aFromUri);
this.isFromRemote = false;
}
@@ -98,7 +99,7 @@ public class Scp extends SSHBase {
* @param aFromUri a string representing the source of the copy.
* @since Ant 1.6.2
*/
public void setRemoteFile(String aFromUri) {
public void setRemoteFile(final String aFromUri) {
validateRemoteUri("remoteFile", aFromUri);
setFromUri(aFromUri);
this.isFromRemote = true;
@@ -111,7 +112,7 @@ public class Scp extends SSHBase {
* @param aToUri a string representing the target of the copy.
* @since Ant 1.6.2
*/
public void setLocalTodir(String aToUri) {
public void setLocalTodir(final String aToUri) {
setToUri(aToUri);
this.isToRemote = false;
}
@@ -121,7 +122,7 @@ public class Scp extends SSHBase {
* remote system is to be preserved during copy.
* @since Ant 1.8.0
*/
public void setPreservelastmodified(boolean yesOrNo) {
public void setPreservelastmodified(final boolean yesOrNo) {
this.preserveLastModified = yesOrNo;
}

@@ -131,13 +132,13 @@ public class Scp extends SSHBase {
* @param aToUri a string representing the target of the copy.
* @since Ant 1.6.2
*/
public void setRemoteTodir(String aToUri) {
public void setRemoteTodir(final String aToUri) {
validateRemoteUri("remoteToDir", aToUri);
setToUri(aToUri);
this.isToRemote = true;
}

private static void validateRemoteUri(String type, String aToUri) {
private static void validateRemoteUri(final String type, final String aToUri) {
if (!isRemoteUri(aToUri)) {
throw new BuildException(type + " '" + aToUri + "' is invalid. "
+ "The 'remoteToDir' attribute must "
@@ -153,7 +154,7 @@ public class Scp extends SSHBase {
* @param aToUri a string representing the target of the copy.
* @since Ant 1.6.2
*/
public void setLocalTofile(String aToUri) {
public void setLocalTofile(final String aToUri) {
setToUri(aToUri);
this.isToRemote = false;
}
@@ -164,7 +165,7 @@ public class Scp extends SSHBase {
* @param aToUri a string representing the target of the copy.
* @since Ant 1.6.2
*/
public void setRemoteTofile(String aToUri) {
public void setRemoteTofile(final String aToUri) {
validateRemoteUri("remoteToFile", aToUri);
setToUri(aToUri);
this.isToRemote = true;
@@ -175,7 +176,7 @@ public class Scp extends SSHBase {
*
* @param yesOrNo if true sftp protocol will be used.
*/
public void setSftp(boolean yesOrNo) {
public void setSftp(final boolean yesOrNo) {
isSftp = yesOrNo;
}

@@ -185,7 +186,7 @@ public class Scp extends SSHBase {
*
* @param set FileSet to send to remote host.
*/
public void addFileset(FileSet set) {
public void addFileset(final FileSet set) {
if (fileSets == null) {
fileSets = new LinkedList();
}
@@ -233,10 +234,10 @@ public class Scp extends SSHBase {
+ "must have syntax like the following: "
+ "user:password@host:/path");
}
} catch (Exception e) {
} catch (final Exception e) {
if (getFailonerror()) {
if(e instanceof BuildException) {
BuildException be = (BuildException) e;
final BuildException be = (BuildException) e;
if(be.getLocation() == null) {
be.setLocation(getLocation());
}
@@ -250,9 +251,9 @@ public class Scp extends SSHBase {
}
}

private void download(String fromSshUri, String toPath)
private void download(final String fromSshUri, final String toPath)
throws JSchException, IOException {
String file = parseUri(fromSshUri);
final String file = parseUri(fromSshUri);

Session session = null;
try {
@@ -281,16 +282,16 @@ public class Scp extends SSHBase {
}
}

private void upload(List fileSet, String toSshUri)
private void upload(final List fileSet, final String toSshUri)
throws IOException, JSchException {
String file = parseUri(toSshUri);
final String file = parseUri(toSshUri);

Session session = null;
try {
List list = new ArrayList(fileSet.size());
for (Iterator i = fileSet.iterator(); i.hasNext();) {
FileSet set = (FileSet) i.next();
Directory d = createDirectory(set);
final List list = new ArrayList(fileSet.size());
for (final Iterator i = fileSet.iterator(); i.hasNext();) {
final FileSet set = (FileSet) i.next();
final Directory d = createDirectory(set);
if (d != null) {
list.add(d);
}
@@ -315,9 +316,9 @@ public class Scp extends SSHBase {
}
}

private void upload(String fromPath, String toSshUri)
private void upload(final String fromPath, final String toSshUri)
throws IOException, JSchException {
String file = parseUri(toSshUri);
final String file = parseUri(toSshUri);

Session session = null;
try {
@@ -342,17 +343,17 @@ public class Scp extends SSHBase {
}
}

private String parseUri(String uri) {
private String parseUri(final String uri) {

int indexOfAt = uri.indexOf('@');
int indexOfColon = uri.indexOf(':');
final int indexOfColon = uri.indexOf(':');

if (indexOfColon > -1 && indexOfColon < indexOfAt) {
// user:password@host:/path notation
// everything upto the last @ before the last : is considered
// password. (so if the path contains an @ and a : it will not work)
int indexOfCurrentAt = indexOfAt;
int indexOfLastColon = uri.lastIndexOf(':');
final int indexOfLastColon = uri.lastIndexOf(':');
while (indexOfCurrentAt > -1 && indexOfCurrentAt < indexOfLastColon)
{
indexOfAt = indexOfCurrentAt;
@@ -374,7 +375,7 @@ public class Scp extends SSHBase {
+ "given. Can't authenticate.");
}

int indexOfPath = uri.indexOf(':', indexOfAt + 1);
final int indexOfPath = uri.indexOf(':', indexOfAt + 1);
if (indexOfPath == -1) {
throw new BuildException("no remote path in " + uri);
}
@@ -387,26 +388,26 @@ public class Scp extends SSHBase {
return remotePath;
}

private static boolean isRemoteUri(String uri) {
private static boolean isRemoteUri(final String uri) {
boolean isRemote = true;
int indexOfAt = uri.indexOf('@');
final int indexOfAt = uri.indexOf('@');
if (indexOfAt < 0) {
isRemote = false;
}
return isRemote;
}

private Directory createDirectory(FileSet set) {
DirectoryScanner scanner = set.getDirectoryScanner(getProject());
private Directory createDirectory(final FileSet set) {
final DirectoryScanner scanner = set.getDirectoryScanner(getProject());
Directory root = new Directory(scanner.getBasedir());
String[] files = scanner.getIncludedFiles();
final String[] files = scanner.getIncludedFiles();
if (files.length != 0) {
for (int j = 0; j < files.length; j++) {
String[] path = Directory.getPath(files[j]);
final String[] path = Directory.getPath(files[j]);
Directory current = root;
File currentParent = scanner.getBasedir();
for (int i = 0; i < path.length; i++) {
File file = new File(currentParent, path[i]);
final File file = new File(currentParent, path[i]);
if (file.isDirectory()) {
current.addDirectory(new Directory(file));
current = current.getChild(file);
@@ -423,26 +424,26 @@ public class Scp extends SSHBase {
return root;
}

private void setFromUri(String fromUri) {
private void setFromUri(final String fromUri) {
if (this.fromUri != null) {
throw exactlyOne(FROM_ATTRS);
}
this.fromUri = fromUri;
}

private void setToUri(String toUri) {
private void setToUri(final String toUri) {
if (this.toUri != null) {
throw exactlyOne(TO_ATTRS);
}
this.toUri = toUri;
}

private BuildException exactlyOne(String[] attrs) {
private BuildException exactlyOne(final String[] attrs) {
return exactlyOne(attrs, null);
}

private BuildException exactlyOne(String[] attrs, String alt) {
StringBuffer buf = new StringBuffer("Exactly one of ").append(
private BuildException exactlyOne(final String[] attrs, final String alt) {
final StringBuffer buf = new StringBuffer("Exactly one of ").append(
'[').append(attrs[0]);
for (int i = 1; i < attrs.length; i++) {
buf.append('|').append(attrs[i]);


+ 52
- 50
src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java View File

@@ -28,8 +28,10 @@ import java.io.OutputStream;

import org.apache.tools.ant.util.FileUtils;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;

@@ -51,7 +53,7 @@ public class ScpFromMessage extends AbstractSshMessage {
* Constructor for ScpFromMessage
* @param session the ssh session to use
*/
public ScpFromMessage(Session session) {
public ScpFromMessage(final Session session) {
super(session);
}

@@ -61,7 +63,7 @@ public class ScpFromMessage extends AbstractSshMessage {
* @param session the ssh session to use
* @since Ant 1.7
*/
public ScpFromMessage(boolean verbose, Session session) {
public ScpFromMessage(final boolean verbose, final Session session) {
super(verbose, session);
}

@@ -74,11 +76,11 @@ public class ScpFromMessage extends AbstractSshMessage {
* @param recursive if true use recursion (-r option to scp)
* @since Ant 1.6.2
*/
public ScpFromMessage(boolean verbose,
Session session,
String aRemoteFile,
File aLocalFile,
boolean recursive) {
public ScpFromMessage(final boolean verbose,
final Session session,
final String aRemoteFile,
final File aLocalFile,
final boolean recursive) {
this(false, session, aRemoteFile, aLocalFile, recursive, false);
}

@@ -89,10 +91,10 @@ public class ScpFromMessage extends AbstractSshMessage {
* @param aLocalFile the local file
* @param recursive if true use recursion (-r option to scp)
*/
public ScpFromMessage(Session session,
String aRemoteFile,
File aLocalFile,
boolean recursive) {
public ScpFromMessage(final Session session,
final String aRemoteFile,
final File aLocalFile,
final boolean recursive) {
this(false, session, aRemoteFile, aLocalFile, recursive);
}

@@ -107,12 +109,12 @@ public class ScpFromMessage extends AbstractSshMessage {
* modification times
* @since Ant 1.8.0
*/
public ScpFromMessage(boolean verbose,
Session session,
String aRemoteFile,
File aLocalFile,
boolean recursive,
boolean preserveLastModified) {
public ScpFromMessage(final boolean verbose,
final Session session,
final String aRemoteFile,
final File aLocalFile,
final boolean recursive,
final boolean preserveLastModified) {
super(verbose, session);
this.remoteFile = aRemoteFile;
this.localFile = aLocalFile;
@@ -131,11 +133,11 @@ public class ScpFromMessage extends AbstractSshMessage {
command += "-r ";
}
command += remoteFile;
Channel channel = openExecChannel(command);
final Channel channel = openExecChannel(command);
try {
// get I/O streams for remote scp
OutputStream out = channel.getOutputStream();
InputStream in = channel.getInputStream();
final OutputStream out = channel.getOutputStream();
final InputStream in = channel.getInputStream();

channel.connect();

@@ -153,18 +155,18 @@ public class ScpFromMessage extends AbstractSshMessage {
return preserveLastModified;
}

private void startRemoteCpProtocol(InputStream in,
OutputStream out,
File localFile)
private void startRemoteCpProtocol(final InputStream in,
final OutputStream out,
final File localFile)
throws IOException, JSchException {
File startFile = localFile;
while (true) {
// C0644 filesize filename - header for a regular file
// T time 0 time 0\n - present if perserve time.
// D directory - this is the header for a directory.
ByteArrayOutputStream stream = new ByteArrayOutputStream();
final ByteArrayOutputStream stream = new ByteArrayOutputStream();
while (true) {
int read = in.read();
final int read = in.read();
if (read < 0) {
return;
}
@@ -173,7 +175,7 @@ public class ScpFromMessage extends AbstractSshMessage {
}
stream.write(read);
}
String serverResponse = stream.toString("UTF-8");
final String serverResponse = stream.toString("UTF-8");
if (serverResponse.charAt(0) == 'C') {
parseAndFetchFile(serverResponse, startFile, out, in);
} else if (serverResponse.charAt(0) == 'D') {
@@ -191,14 +193,14 @@ public class ScpFromMessage extends AbstractSshMessage {
}
}

private File parseAndCreateDirectory(String serverResponse,
File localFile) {
private File parseAndCreateDirectory(final String serverResponse,
final File localFile) {
int start = serverResponse.indexOf(" ");
// appears that the next token is not used and it's zero.
start = serverResponse.indexOf(" ", start + 1);
String directoryName = serverResponse.substring(start + 1);
final String directoryName = serverResponse.substring(start + 1);
if (localFile.isDirectory()) {
File dir = new File(localFile, directoryName);
final File dir = new File(localFile, directoryName);
dir.mkdir();
log("Creating: " + dir);
return dir;
@@ -206,19 +208,19 @@ public class ScpFromMessage extends AbstractSshMessage {
return null;
}

private void parseAndFetchFile(String serverResponse,
File localFile,
OutputStream out,
InputStream in)
private void parseAndFetchFile(final String serverResponse,
final File localFile,
final OutputStream out,
final InputStream in)
throws IOException, JSchException {
int start = 0;
int end = serverResponse.indexOf(" ", start + 1);
start = end + 1;
end = serverResponse.indexOf(" ", start + 1);
long filesize = Long.parseLong(serverResponse.substring(start, end));
String filename = serverResponse.substring(end + 1);
final long filesize = Long.parseLong(serverResponse.substring(start, end));
final String filename = serverResponse.substring(end + 1);
log("Receiving: " + filename + " : " + filesize);
File transferFile = (localFile.isDirectory())
final File transferFile = (localFile.isDirectory())
? new File(localFile, filename)
: localFile;
fetchFile(transferFile, filesize, out, in);
@@ -226,25 +228,25 @@ public class ScpFromMessage extends AbstractSshMessage {
sendAck(out);
}

private void fetchFile(File localFile,
private void fetchFile(final File localFile,
long filesize,
OutputStream out,
InputStream in)
final OutputStream out,
final InputStream in)
throws IOException, JSchException {
byte[] buf = new byte[BUFFER_SIZE];
final byte[] buf = new byte[BUFFER_SIZE];
sendAck(out);

// read a content of lfile
FileOutputStream fos = new FileOutputStream(localFile);
final FileOutputStream fos = new FileOutputStream(localFile);
int length;
long totalLength = 0;
long startTime = System.currentTimeMillis();
final long startTime = System.currentTimeMillis();

// only track progress for files larger than 100kb in verbose mode
boolean trackProgress = getVerbose() && filesize > HUNDRED_KILOBYTES;
final boolean trackProgress = getVerbose() && filesize > HUNDRED_KILOBYTES;
// since filesize keeps on decreasing we have to store the
// initial filesize
long initFilesize = filesize;
final long initFilesize = filesize;
int percentTransmitted = 0;

try {
@@ -269,7 +271,7 @@ public class ScpFromMessage extends AbstractSshMessage {
}
}
} finally {
long endTime = System.currentTimeMillis();
final long endTime = System.currentTimeMillis();
logStats(startTime, endTime, totalLength);
fos.flush();
fos.close();
@@ -280,14 +282,14 @@ public class ScpFromMessage extends AbstractSshMessage {
}
}

private void setLastModified(File localFile) throws JSchException {
private void setLastModified(final File localFile) throws JSchException {
SftpATTRS fileAttributes = null;
ChannelSftp channel = openSftpChannel();
final ChannelSftp channel = openSftpChannel();
channel.connect();
try {
fileAttributes = channel.lstat(remoteDir(remoteFile)
+ localFile.getName());
} catch (SftpException e) {
} catch (final SftpException e) {
throw new JSchException("failed to stat remote file", e);
}
FileUtils.getFileUtils().setFileLastModified(localFile,
@@ -299,7 +301,7 @@ public class ScpFromMessage extends AbstractSshMessage {
/**
* returns the directory part of the remote file, if any.
*/
private static String remoteDir(String remoteFile) {
private static String remoteDir(final String remoteFile) {
int index = remoteFile.lastIndexOf("/");
if (index < 0) {
index = remoteFile.lastIndexOf("\\");


+ 37
- 36
src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessageBySftp.java View File

@@ -25,6 +25,7 @@ import org.apache.tools.ant.util.FileUtils;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.SftpProgressMonitor;
@@ -37,7 +38,7 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
private static final int HUNDRED_KILOBYTES = 102400;

private String remoteFile;
private File localFile;
private final File localFile;
private boolean isRecursive = false;
private boolean verbose = false;

@@ -50,11 +51,11 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
* @param recursive if true use recursion
* @since Ant 1.7
*/
public ScpFromMessageBySftp(boolean verbose,
Session session,
String aRemoteFile,
File aLocalFile,
boolean recursive) {
public ScpFromMessageBySftp(final boolean verbose,
final Session session,
final String aRemoteFile,
final File aLocalFile,
final boolean recursive) {
this(verbose, session, aRemoteFile, aLocalFile, recursive, false);
}

@@ -65,10 +66,10 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
* @param aLocalFile the local file
* @param recursive if true use recursion
*/
public ScpFromMessageBySftp(Session session,
String aRemoteFile,
File aLocalFile,
boolean recursive) {
public ScpFromMessageBySftp(final Session session,
final String aRemoteFile,
final File aLocalFile,
final boolean recursive) {
this(false, session, aRemoteFile, aLocalFile, recursive);
}

@@ -83,12 +84,12 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
* modification times
* @since Ant 1.8.0
*/
public ScpFromMessageBySftp(boolean verbose,
Session session,
String aRemoteFile,
File aLocalFile,
boolean recursive,
boolean preserveLastModified) {
public ScpFromMessageBySftp(final boolean verbose,
final Session session,
final String aRemoteFile,
final File aLocalFile,
final boolean recursive,
final boolean preserveLastModified) {
super(verbose, session, aRemoteFile, aLocalFile, recursive,
preserveLastModified);
this.verbose = verbose;
@@ -103,20 +104,20 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
* @throws JSchException on errors detected by scp
*/
public void execute() throws IOException, JSchException {
ChannelSftp channel = openSftpChannel();
final ChannelSftp channel = openSftpChannel();
try {
channel.connect();
try {
SftpATTRS attrs = channel.stat(remoteFile);
final SftpATTRS attrs = channel.stat(remoteFile);
if (attrs.isDir() && !remoteFile.endsWith("/")) {
remoteFile = remoteFile + "/";
}
} catch (SftpException ee) {
} catch (final SftpException ee) {
// Ignored
}
getDir(channel, remoteFile, localFile);
} catch (SftpException e) {
JSchException schException = new JSchException("Could not get '"+ remoteFile
} catch (final SftpException e) {
final JSchException schException = new JSchException("Could not get '"+ remoteFile
+"' to '"+localFile+"' - "
+e.toString());
schException.initCause(e);
@@ -129,9 +130,9 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
log("done\n");
}

private void getDir(ChannelSftp channel,
String remoteFile,
File localFile) throws IOException, SftpException {
private void getDir(final ChannelSftp channel,
final String remoteFile,
final File localFile) throws IOException, SftpException {
String pwd = remoteFile;
if (remoteFile.lastIndexOf('/') != -1) {
if (remoteFile.length() > 1) {
@@ -142,11 +143,11 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
if (!localFile.exists()) {
localFile.mkdirs();
}
java.util.Vector files = channel.ls(remoteFile);
final java.util.Vector files = channel.ls(remoteFile);
final int size = files.size();
for (int i = 0; i < size; i++) {
ChannelSftp.LsEntry le = (ChannelSftp.LsEntry) files.elementAt(i);
String name = le.getFilename();
final ChannelSftp.LsEntry le = (ChannelSftp.LsEntry) files.elementAt(i);
final String name = le.getFilename();
if (le.getAttrs().isDir()) {
if (name.equals(".") || name.equals("..")) {
continue;
@@ -161,13 +162,13 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
channel.cd("..");
}

private void getFile(ChannelSftp channel,
ChannelSftp.LsEntry le,
private void getFile(final ChannelSftp channel,
final ChannelSftp.LsEntry le,
File localFile) throws IOException, SftpException {
String remoteFile = le.getFilename();
final String remoteFile = le.getFilename();
if (!localFile.exists()) {
String path = localFile.getAbsolutePath();
int i = path.lastIndexOf(File.pathSeparator);
final String path = localFile.getAbsolutePath();
final int i = path.lastIndexOf(File.pathSeparator);
if (i != -1) {
if (path.length() > File.pathSeparator.length()) {
new File(path.substring(0, i)).mkdirs();
@@ -179,11 +180,11 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
localFile = new File(localFile, remoteFile);
}

long startTime = System.currentTimeMillis();
long totalLength = le.getAttrs().getSize();
final long startTime = System.currentTimeMillis();
final long totalLength = le.getAttrs().getSize();

SftpProgressMonitor monitor = null;
boolean trackProgress = getVerbose() && totalLength > HUNDRED_KILOBYTES;
final boolean trackProgress = getVerbose() && totalLength > HUNDRED_KILOBYTES;
if (trackProgress) {
monitor = getProgressMonitor();
}
@@ -191,7 +192,7 @@ public class ScpFromMessageBySftp extends ScpFromMessage {
log("Receiving: " + remoteFile + " : " + le.getAttrs().getSize());
channel.get(remoteFile, localFile.getAbsolutePath(), monitor);
} finally {
long endTime = System.currentTimeMillis();
final long endTime = System.currentTimeMillis();
logStats(startTime, endTime, (int) totalLength);
}
if (getPreserveLastModified()) {


+ 50
- 48
src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java View File

@@ -26,7 +26,9 @@ import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

/**
* Utility class to carry out an upload scp transfer.
@@ -44,7 +46,7 @@ public class ScpToMessage extends AbstractSshMessage {
* Constructor for ScpToMessage
* @param session the ssh session to use
*/
public ScpToMessage(Session session) {
public ScpToMessage(final Session session) {
super(session);
}

@@ -54,7 +56,7 @@ public class ScpToMessage extends AbstractSshMessage {
* @param session the ssh session to use
* @since Ant 1.7
*/
public ScpToMessage(boolean verbose, Session session) {
public ScpToMessage(final boolean verbose, final Session session) {
super(verbose, session);
}

@@ -66,10 +68,10 @@ public class ScpToMessage extends AbstractSshMessage {
* @param aRemotePath the remote path
* @since Ant 1.6.2
*/
public ScpToMessage(boolean verbose,
Session session,
File aLocalFile,
String aRemotePath) {
public ScpToMessage(final boolean verbose,
final Session session,
final File aLocalFile,
final String aRemotePath) {
this(verbose, session, aRemotePath);

this.localFile = aLocalFile;
@@ -83,10 +85,10 @@ public class ScpToMessage extends AbstractSshMessage {
* @param aRemotePath the remote path
* @since Ant 1.6.2
*/
public ScpToMessage(boolean verbose,
Session session,
List aDirectoryList,
String aRemotePath) {
public ScpToMessage(final boolean verbose,
final Session session,
final List aDirectoryList,
final String aRemotePath) {
this(verbose, session, aRemotePath);

this.directoryList = aDirectoryList;
@@ -99,9 +101,9 @@ public class ScpToMessage extends AbstractSshMessage {
* @param aRemotePath the remote path
* @since Ant 1.6.2
*/
private ScpToMessage(boolean verbose,
Session session,
String aRemotePath) {
private ScpToMessage(final boolean verbose,
final Session session,
final String aRemotePath) {
super(verbose, session);
this.remotePath = aRemotePath;
}
@@ -112,9 +114,9 @@ public class ScpToMessage extends AbstractSshMessage {
* @param aLocalFile the local file
* @param aRemotePath the remote path
*/
public ScpToMessage(Session session,
File aLocalFile,
String aRemotePath) {
public ScpToMessage(final Session session,
final File aLocalFile,
final String aRemotePath) {
this(false, session, aLocalFile, aRemotePath);
}

@@ -124,9 +126,9 @@ public class ScpToMessage extends AbstractSshMessage {
* @param aDirectoryList a list of directories
* @param aRemotePath the remote path
*/
public ScpToMessage(Session session,
List aDirectoryList,
String aRemotePath) {
public ScpToMessage(final Session session,
final List aDirectoryList,
final String aRemotePath) {
this(false, session, aDirectoryList, aRemotePath);
}

@@ -146,12 +148,12 @@ public class ScpToMessage extends AbstractSshMessage {
}

private void doSingleTransfer() throws IOException, JSchException {
String cmd = "scp -t " + remotePath;
Channel channel = openExecChannel(cmd);
final String cmd = "scp -t " + remotePath;
final Channel channel = openExecChannel(cmd);
try {

OutputStream out = channel.getOutputStream();
InputStream in = channel.getInputStream();
final OutputStream out = channel.getOutputStream();
final InputStream in = channel.getInputStream();

channel.connect();

@@ -165,16 +167,16 @@ public class ScpToMessage extends AbstractSshMessage {
}

private void doMultipleTransfer() throws IOException, JSchException {
Channel channel = openExecChannel("scp -r -d -t " + remotePath);
final Channel channel = openExecChannel("scp -r -d -t " + remotePath);
try {
OutputStream out = channel.getOutputStream();
InputStream in = channel.getInputStream();
final OutputStream out = channel.getOutputStream();
final InputStream in = channel.getInputStream();

channel.connect();

waitForAck(in);
for (Iterator i = directoryList.iterator(); i.hasNext();) {
Directory current = (Directory) i.next();
for (final Iterator i = directoryList.iterator(); i.hasNext();) {
final Directory current = (Directory) i.next();
sendDirectory(current, in, out);
}
} finally {
@@ -184,21 +186,21 @@ public class ScpToMessage extends AbstractSshMessage {
}
}

private void sendDirectory(Directory current,
InputStream in,
OutputStream out) throws IOException {
for (Iterator fileIt = current.filesIterator(); fileIt.hasNext();) {
private void sendDirectory(final Directory current,
final InputStream in,
final OutputStream out) throws IOException {
for (final Iterator fileIt = current.filesIterator(); fileIt.hasNext();) {
sendFileToRemote((File) fileIt.next(), in, out);
}
for (Iterator dirIt = current.directoryIterator(); dirIt.hasNext();) {
Directory dir = (Directory) dirIt.next();
for (final Iterator dirIt = current.directoryIterator(); dirIt.hasNext();) {
final Directory dir = (Directory) dirIt.next();
sendDirectoryToRemote(dir, in, out);
}
}

private void sendDirectoryToRemote(Directory directory,
InputStream in,
OutputStream out) throws IOException {
private void sendDirectoryToRemote(final Directory directory,
final InputStream in,
final OutputStream out) throws IOException {
String command = "D0755 0 ";
command += directory.getDirectory().getName();
command += "\n";
@@ -213,11 +215,11 @@ public class ScpToMessage extends AbstractSshMessage {
waitForAck(in);
}

private void sendFileToRemote(File localFile,
InputStream in,
OutputStream out) throws IOException {
private void sendFileToRemote(final File localFile,
final InputStream in,
final OutputStream out) throws IOException {
// send "C0644 filesize filename", where filename should not include '/'
long filesize = localFile.length();
final long filesize = localFile.length();
String command = "C0644 " + filesize + " ";
command += localFile.getName();
command += "\n";
@@ -228,16 +230,16 @@ public class ScpToMessage extends AbstractSshMessage {
waitForAck(in);

// send a content of lfile
FileInputStream fis = new FileInputStream(localFile);
byte[] buf = new byte[BUFFER_SIZE];
long startTime = System.currentTimeMillis();
final FileInputStream fis = new FileInputStream(localFile);
final byte[] buf = new byte[BUFFER_SIZE];
final long startTime = System.currentTimeMillis();
long totalLength = 0;

// only track progress for files larger than 100kb in verbose mode
boolean trackProgress = getVerbose() && filesize > HUNDRED_KILOBYTES;
final boolean trackProgress = getVerbose() && filesize > HUNDRED_KILOBYTES;
// since filesize keeps on decreasing we have to store the
// initial filesize
long initFilesize = filesize;
final long initFilesize = filesize;
int percentTransmitted = 0;

try {
@@ -245,7 +247,7 @@ public class ScpToMessage extends AbstractSshMessage {
log("Sending: " + localFile.getName() + " : " + localFile.length());
}
while (true) {
int len = fis.read(buf, 0, buf.length);
final int len = fis.read(buf, 0, buf.length);
if (len <= 0) {
break;
}
@@ -263,7 +265,7 @@ public class ScpToMessage extends AbstractSshMessage {
waitForAck(in);
} finally {
if (this.getVerbose()) {
long endTime = System.currentTimeMillis();
final long endTime = System.currentTimeMillis();
logStats(startTime, endTime, totalLength);
}
fis.close();


+ 43
- 42
src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessageBySftp.java View File

@@ -25,6 +25,7 @@ import java.util.List;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.SftpProgressMonitor;

@@ -36,7 +37,7 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
private static final int HUNDRED_KILOBYTES = 102400;

private File localFile;
private String remotePath;
private final String remotePath;
private List directoryList;

/**
@@ -47,10 +48,10 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
* @param aRemotePath the remote path
* @since Ant 1.7
*/
public ScpToMessageBySftp(boolean verbose,
Session session,
File aLocalFile,
String aRemotePath) {
public ScpToMessageBySftp(final boolean verbose,
final Session session,
final File aLocalFile,
final String aRemotePath) {
this(verbose, session, aRemotePath);

this.localFile = aLocalFile;
@@ -64,10 +65,10 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
* @param aRemotePath the remote path
* @since Ant 1.7
*/
public ScpToMessageBySftp(boolean verbose,
Session session,
List aDirectoryList,
String aRemotePath) {
public ScpToMessageBySftp(final boolean verbose,
final Session session,
final List aDirectoryList,
final String aRemotePath) {
this(verbose, session, aRemotePath);

this.directoryList = aDirectoryList;
@@ -80,9 +81,9 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
* @param aRemotePath the remote path
* @since Ant 1.6.2
*/
private ScpToMessageBySftp(boolean verbose,
Session session,
String aRemotePath) {
private ScpToMessageBySftp(final boolean verbose,
final Session session,
final String aRemotePath) {
super(verbose, session);
this.remotePath = aRemotePath;
}
@@ -93,9 +94,9 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
* @param aLocalFile the local file
* @param aRemotePath the remote path
*/
public ScpToMessageBySftp(Session session,
File aLocalFile,
String aRemotePath) {
public ScpToMessageBySftp(final Session session,
final File aLocalFile,
final String aRemotePath) {
this(false, session, aLocalFile, aRemotePath);
}

@@ -105,9 +106,9 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
* @param aDirectoryList a list of directories
* @param aRemotePath the remote path
*/
public ScpToMessageBySftp(Session session,
List aDirectoryList,
String aRemotePath) {
public ScpToMessageBySftp(final Session session,
final List aDirectoryList,
final String aRemotePath) {
this(false, session, aDirectoryList, aRemotePath);
}

@@ -127,13 +128,13 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
}

private void doSingleTransfer() throws IOException, JSchException {
ChannelSftp channel = openSftpChannel();
final ChannelSftp channel = openSftpChannel();
try {
channel.connect();
try {
sendFileToRemote(channel, localFile, remotePath);
} catch (SftpException e) {
JSchException schException = new JSchException("Could not send '" + localFile
} catch (final SftpException e) {
final JSchException schException = new JSchException("Could not send '" + localFile
+ "' to '" + remotePath + "' - "
+ e.toString());
schException.initCause(e);
@@ -147,14 +148,14 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
}

private void doMultipleTransfer() throws IOException, JSchException {
ChannelSftp channel = openSftpChannel();
final ChannelSftp channel = openSftpChannel();
try {
channel.connect();

try {
try {
channel.stat(remotePath);
} catch (SftpException e) {
} catch (final SftpException e) {
if (e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE) {
// dir does not exist.
channel.mkdir(remotePath);
@@ -164,20 +165,20 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
}
}
channel.cd(remotePath);
} catch (SftpException e) {
} catch (final SftpException e) {
throw new JSchException("Could not CD to '" + remotePath
+ "' - " + e.toString(), e);
}
Directory current = null;
try {
for (Iterator i = directoryList.iterator(); i.hasNext();) {
for (final Iterator i = directoryList.iterator(); i.hasNext();) {
current = (Directory) i.next();
if (getVerbose()) {
log("Sending directory " + current);
}
sendDirectory(channel, current);
}
} catch (SftpException e) {
} catch (final SftpException e) {
String msg = "Error sending directory";
if (current != null && current.getDirectory() != null) {
msg += " '" + current.getDirectory().getName() + "'";
@@ -191,25 +192,25 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
}
}

private void sendDirectory(ChannelSftp channel,
Directory current)
private void sendDirectory(final ChannelSftp channel,
final Directory current)
throws IOException, SftpException {
for (Iterator fileIt = current.filesIterator(); fileIt.hasNext();) {
for (final Iterator fileIt = current.filesIterator(); fileIt.hasNext();) {
sendFileToRemote(channel, (File) fileIt.next(), null);
}
for (Iterator dirIt = current.directoryIterator(); dirIt.hasNext();) {
Directory dir = (Directory) dirIt.next();
for (final Iterator dirIt = current.directoryIterator(); dirIt.hasNext();) {
final Directory dir = (Directory) dirIt.next();
sendDirectoryToRemote(channel, dir);
}
}

private void sendDirectoryToRemote(ChannelSftp channel,
Directory directory)
private void sendDirectoryToRemote(final ChannelSftp channel,
final Directory directory)
throws IOException, SftpException {
String dir = directory.getDirectory().getName();
final String dir = directory.getDirectory().getName();
try {
channel.stat(dir);
} catch (SftpException e) {
} catch (final SftpException e) {
// dir does not exist.
if (e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE) {
channel.mkdir(dir);
@@ -220,21 +221,21 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
channel.cd("..");
}

private void sendFileToRemote(ChannelSftp channel,
File localFile,
private void sendFileToRemote(final ChannelSftp channel,
final File localFile,
String remotePath)
throws IOException, SftpException {
long filesize = localFile.length();
final long filesize = localFile.length();

if (remotePath == null) {
remotePath = localFile.getName();
}

long startTime = System.currentTimeMillis();
long totalLength = filesize;
final long startTime = System.currentTimeMillis();
final long totalLength = filesize;

// only track progress for files larger than 100kb in verbose mode
boolean trackProgress = getVerbose() && filesize > HUNDRED_KILOBYTES;
final boolean trackProgress = getVerbose() && filesize > HUNDRED_KILOBYTES;

SftpProgressMonitor monitor = null;
if (trackProgress) {
@@ -248,7 +249,7 @@ public class ScpToMessageBySftp extends ScpToMessage/*AbstractSshMessage*/ {
channel.put(localFile.getAbsolutePath(), remotePath, monitor);
} finally {
if (this.getVerbose()) {
long endTime = System.currentTimeMillis();
final long endTime = System.currentTimeMillis();
logStats(startTime, endTime, (int) totalLength);
}
}


+ 12
- 11
src/main/org/apache/tools/ant/types/resolver/ApacheCatalog.java View File

@@ -18,9 +18,10 @@

package org.apache.tools.ant.types.resolver;

import com.sun.org.apache.xml.internal.resolver.Catalog;
import com.sun.org.apache.xml.internal.resolver.CatalogEntry;
import com.sun.org.apache.xml.internal.resolver.helpers.PublicId;
import org.apache.xml.resolver.Catalog;
import org.apache.xml.resolver.CatalogEntry;
import org.apache.xml.resolver.helpers.PublicId;


/**
* This class extends the Catalog class provided by Norman Walsh's
@@ -54,7 +55,7 @@ public class ApacheCatalog extends Catalog {
* @return the catalog.
*/
protected Catalog newCatalog() {
ApacheCatalog cat = (ApacheCatalog) super.newCatalog();
final ApacheCatalog cat = (ApacheCatalog) super.newCatalog();
cat.setResolver(resolver);
return cat;
}
@@ -63,7 +64,7 @@ public class ApacheCatalog extends Catalog {
* Set the resolver object to callback.
* @param resolver the apache catalog resolver.
*/
public void setResolver(ApacheCatalogResolver resolver) {
public void setResolver(final ApacheCatalogResolver resolver) {
this.resolver = resolver;
}

@@ -84,14 +85,14 @@ public class ApacheCatalog extends Catalog {
*
* @param entry The CatalogEntry to process.
*/
public void addEntry(CatalogEntry entry) {
public void addEntry(final CatalogEntry entry) {

int type = entry.getEntryType();
final int type = entry.getEntryType();

if (type == PUBLIC) {

String publicid = PublicId.normalize(entry.getEntryArg(0));
String systemid = normalizeURI(entry.getEntryArg(1));
final String publicid = PublicId.normalize(entry.getEntryArg(0));
final String systemid = normalizeURI(entry.getEntryArg(1));

if (resolver == null) {
catalogManager.debug
@@ -102,8 +103,8 @@ public class ApacheCatalog extends Catalog {

} else if (type == URI) {

String uri = normalizeURI(entry.getEntryArg(0));
String altURI = normalizeURI(entry.getEntryArg(1));
final String uri = normalizeURI(entry.getEntryArg(0));
final String altURI = normalizeURI(entry.getEntryArg(1));

if (resolver == null) {
catalogManager.debug


+ 17
- 17
src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java View File

@@ -25,10 +25,10 @@ import java.net.URL;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.ResourceLocation;
import org.apache.tools.ant.types.XMLCatalog;
import org.apache.xml.resolver.Catalog;
import org.apache.xml.resolver.CatalogManager;
import org.apache.xml.resolver.tools.CatalogResolver;

import com.sun.org.apache.xml.internal.resolver.Catalog;
import com.sun.org.apache.xml.internal.resolver.CatalogManager;
import com.sun.org.apache.xml.internal.resolver.tools.CatalogResolver;

/**
* <p>This class extends the CatalogResolver class provided by Norman
@@ -91,7 +91,7 @@ public class ApacheCatalogResolver extends CatalogResolver {
* Set the XMLCatalog object to callback.
* @param xmlCatalog the XMLCatalog to use.
*/
public void setXMLCatalog(XMLCatalog xmlCatalog) {
public void setXMLCatalog(final XMLCatalog xmlCatalog) {
this.xmlCatalog = xmlCatalog;
}

@@ -100,22 +100,22 @@ public class ApacheCatalogResolver extends CatalogResolver {
* file within a <code>&lt;catalogfiles&gt;</code> fileset.
* @param file the external catalog file.
*/
public void parseCatalog(String file) {
public void parseCatalog(final String file) {

Catalog catalog = getCatalog();
final Catalog catalog = getCatalog();
if (!(catalog instanceof ApacheCatalog)) {
throw new BuildException("Wrong catalog type found: " + catalog.getClass().getName());
}
ApacheCatalog apacheCatalog = (ApacheCatalog) catalog;
final ApacheCatalog apacheCatalog = (ApacheCatalog) catalog;

// Pass in reference to ourselves so we can be called back.
apacheCatalog.setResolver(this);

try {
apacheCatalog.parseCatalog(file);
} catch (MalformedURLException ex) {
} catch (final MalformedURLException ex) {
throw new BuildException(ex);
} catch (IOException ex) {
} catch (final IOException ex) {
throw new BuildException(ex);
}
}
@@ -133,11 +133,11 @@ public class ApacheCatalogResolver extends CatalogResolver {
* directory in which the catalog is located.
*
*/
public void addPublicEntry(String publicid,
String systemid,
URL base) {
public void addPublicEntry(final String publicid,
final String systemid,
final URL base) {

ResourceLocation dtd = new ResourceLocation();
final ResourceLocation dtd = new ResourceLocation();
dtd.setBase(base);
dtd.setPublicId(publicid);
dtd.setLocation(systemid);
@@ -159,11 +159,11 @@ public class ApacheCatalogResolver extends CatalogResolver {
* directory in which the catalog is located.
*
*/
public void addURIEntry(String uri,
String altURI,
URL base) {
public void addURIEntry(final String uri,
final String altURI,
final URL base) {

ResourceLocation entity = new ResourceLocation();
final ResourceLocation entity = new ResourceLocation();
entity.setBase(base);
entity.setPublicId(uri);
entity.setLocation(altURI);


+ 23
- 19
src/main/org/apache/tools/ant/util/depend/bcel/DependencyVisitor.java View File

@@ -23,7 +23,11 @@ import java.util.StringTokenizer;

import com.sun.org.apache.bcel.internal.classfile.ConstantClass;
import com.sun.org.apache.bcel.internal.classfile.ConstantNameAndType;
import com.sun.org.apache.bcel.internal.classfile.ConstantPool;
import com.sun.org.apache.bcel.internal.classfile.EmptyVisitor;
import com.sun.org.apache.bcel.internal.classfile.Field;
import com.sun.org.apache.bcel.internal.classfile.JavaClass;
import com.sun.org.apache.bcel.internal.classfile.Method;

/**
* A BCEL visitor implementation to collect class dependency information
@@ -31,7 +35,7 @@ import com.sun.org.apache.bcel.internal.classfile.JavaClass;
*/
public class DependencyVisitor extends EmptyVisitor {
/** The collected dependencies */
private Hashtable<String, String> dependencies = new Hashtable<String, String>();
private final Hashtable<String, String> dependencies = new Hashtable<String, String>();
/**
* The current class's constant pool - used to determine class names
* from class references.
@@ -58,7 +62,7 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param constantPool the constant pool of the class being visited.
*/
public void visitConstantPool(ConstantPool constantPool) {
public void visitConstantPool(final ConstantPool constantPool) {
this.constantPool = constantPool;
}

@@ -67,8 +71,8 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param constantClass the constantClass entry for the class reference
*/
public void visitConstantClass(ConstantClass constantClass) {
String classname
public void visitConstantClass(final ConstantClass constantClass) {
final String classname
= constantClass.getConstantValue(constantPool).toString();
addSlashClass(classname);
}
@@ -80,18 +84,18 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param obj the name and type reference being visited.
*/
public void visitConstantNameAndType(ConstantNameAndType obj) {
String name = obj.getName(constantPool);
public void visitConstantNameAndType(final ConstantNameAndType obj) {
final String name = obj.getName(constantPool);
if (obj.getSignature(constantPool).equals("Ljava/lang/Class;")
&& name.startsWith("class$")) {
String classname
= name.substring("class$".length()).replace('$', '.');
// does the class have a package structure
int index = classname.lastIndexOf(".");
final int index = classname.lastIndexOf(".");
if (index > 0) {
char start;
// check if the package structure is more than 1 level deep
int index2 = classname.lastIndexOf(".", index - 1);
final int index2 = classname.lastIndexOf(".", index - 1);
if (index2 != -1) {
// class name has more than 1 package level 'com.company.Class'
start = classname.charAt(index2 + 1);
@@ -124,7 +128,7 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param field the field being visited
*/
public void visitField(Field field) {
public void visitField(final Field field) {
addClasses(field.getSignature());
}

@@ -133,7 +137,7 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param javaClass the class being visited.
*/
public void visitJavaClass(JavaClass javaClass) {
public void visitJavaClass(final JavaClass javaClass) {
addClass(javaClass.getClassName());
}

@@ -142,9 +146,9 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param method the method being visited.
*/
public void visitMethod(Method method) {
String signature = method.getSignature();
int pos = signature.indexOf(")");
public void visitMethod(final Method method) {
final String signature = method.getSignature();
final int pos = signature.indexOf(")");
addClasses(signature.substring(1, pos));
addClasses(signature.substring(pos + 1));
}
@@ -154,7 +158,7 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param classname the class to be added to the list of dependencies.
*/
void addClass(String classname) {
void addClass(final String classname) {
dependencies.put(classname, classname);
}

@@ -164,11 +168,11 @@ public class DependencyVisitor extends EmptyVisitor {
* @param string the descriptor string, being descriptors separated by
* ';' characters.
*/
private void addClasses(String string) {
StringTokenizer tokens = new StringTokenizer(string, ";");
private void addClasses(final String string) {
final StringTokenizer tokens = new StringTokenizer(string, ";");
while (tokens.hasMoreTokens()) {
String descriptor = tokens.nextToken();
int pos = descriptor.indexOf('L');
final String descriptor = tokens.nextToken();
final int pos = descriptor.indexOf('L');
if (pos != -1) {
addSlashClass(descriptor.substring(pos + 1));
}
@@ -181,7 +185,7 @@ public class DependencyVisitor extends EmptyVisitor {
*
* @param classname the class name in slash format
*/
private void addSlashClass(String classname) {
private void addSlashClass(final String classname) {
addClass(classname.replace('/', '.'));
}
}


+ 16
- 14
src/main/org/apache/tools/ant/util/regexp/JakartaOroMatcher.java View File

@@ -19,12 +19,14 @@
package org.apache.tools.ant.util.regexp;

import java.util.Vector;
import java.util.regex.MatchResult;

import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.tools.ant.BuildException;


/**
* Implementation of RegexpMatcher for Jakarta-ORO.
*
@@ -47,7 +49,7 @@ public class JakartaOroMatcher implements RegexpMatcher {
* Set the regexp pattern from the String description.
* @param pattern the pattern to match
*/
public void setPattern(String pattern) {
public void setPattern(final String pattern) {
this.pattern = pattern;
}

@@ -65,13 +67,13 @@ public class JakartaOroMatcher implements RegexpMatcher {
* @return the compiled pattern
* @throws BuildException on error
*/
protected Pattern getCompiledPattern(int options)
protected Pattern getCompiledPattern(final int options)
throws BuildException {
try {
// compute the compiler options based on the input options first
Pattern p = compiler.compile(pattern, getCompilerOptions(options));
final Pattern p = compiler.compile(pattern, getCompilerOptions(options));
return p;
} catch (Exception e) {
} catch (final Exception e) {
throw new BuildException(e);
}
}
@@ -82,7 +84,7 @@ public class JakartaOroMatcher implements RegexpMatcher {
* @return true if the pattern matches
* @throws BuildException on error
*/
public boolean matches(String argument) throws BuildException {
public boolean matches(final String argument) throws BuildException {
return matches(argument, MATCH_DEFAULT);
}

@@ -93,9 +95,9 @@ public class JakartaOroMatcher implements RegexpMatcher {
* @return true if the pattern matches
* @throws BuildException on error
*/
public boolean matches(String input, int options)
public boolean matches(final String input, final int options)
throws BuildException {
Pattern p = getCompiledPattern(options);
final Pattern p = getCompiledPattern(options);
return matcher.contains(input, p);
}

@@ -110,7 +112,7 @@ public class JakartaOroMatcher implements RegexpMatcher {
* @return the vector of groups
* @throws BuildException on error
*/
public Vector getGroups(String argument) throws BuildException {
public Vector getGroups(final String argument) throws BuildException {
return getGroups(argument, MATCH_DEFAULT);
}

@@ -125,14 +127,14 @@ public class JakartaOroMatcher implements RegexpMatcher {
* @return the vector of groups
* @throws BuildException on error
*/
public Vector getGroups(String input, int options)
public Vector getGroups(final String input, final int options)
throws BuildException {
if (!matches(input, options)) {
return null;
}
Vector v = new Vector();
MatchResult mr = matcher.getMatch();
int cnt = mr.groups();
final Vector v = new Vector();
final MatchResult mr = matcher.getMatch();
final int cnt = mr.groups();
for (int i = 0; i < cnt; i++) {
String match = mr.group(i);
// treat non-matching groups as empty matches
@@ -149,7 +151,7 @@ public class JakartaOroMatcher implements RegexpMatcher {
* @param options the generic options
* @return the specific options
*/
protected int getCompilerOptions(int options) {
protected int getCompilerOptions(final int options) {
int cOptions = Perl5Compiler.DEFAULT_MASK;

if (RegexpUtil.hasFlag(options, MATCH_CASE_INSENSITIVE)) {


+ 8
- 6
src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java View File

@@ -18,6 +18,8 @@
package org.apache.tools.ant.util.regexp;

import org.apache.oro.text.regex.Perl5Substitution;
import org.apache.oro.text.regex.Substitution;
import org.apache.oro.text.regex.Util;
import org.apache.tools.ant.BuildException;

/***
@@ -40,10 +42,10 @@ public class JakartaOroRegexp extends JakartaOroMatcher implements Regexp {
* @return the result of the operation
* @throws BuildException on error
*/
public String substitute(String input, String argument, int options)
public String substitute(final String input, final String argument, final int options)
throws BuildException {
// translate \1 to $1 so that the Perl5Substitution will work
StringBuffer subst = new StringBuffer();
final StringBuffer subst = new StringBuffer();
for (int i = 0; i < argument.length(); i++) {
char c = argument.charAt(i);
if (c == '$') {
@@ -52,7 +54,7 @@ public class JakartaOroRegexp extends JakartaOroMatcher implements Regexp {
} else if (c == '\\') {
if (++i < argument.length()) {
c = argument.charAt(i);
int value = Character.digit(c, DECIMAL);
final int value = Character.digit(c, DECIMAL);
if (value > -1) {
subst.append("$").append(value);
} else {
@@ -68,7 +70,7 @@ public class JakartaOroRegexp extends JakartaOroMatcher implements Regexp {
}

// Do the substitution
Substitution s =
final Substitution s =
new Perl5Substitution(subst.toString(),
Perl5Substitution.INTERPOLATE_ALL);
return Util.substitute(matcher,
@@ -84,8 +86,8 @@ public class JakartaOroRegexp extends JakartaOroMatcher implements Regexp {
* @param options the ant regexp options
* @return the oro substition options
*/
protected int getSubsOptions(int options) {
boolean replaceAll = RegexpUtil.hasFlag(options, REPLACE_ALL);
protected int getSubsOptions(final int options) {
final boolean replaceAll = RegexpUtil.hasFlag(options, REPLACE_ALL);
int subsOptions = 1;
if (replaceAll) {
subsOptions = Util.SUBSTITUTE_ALL;


Loading…
Cancel
Save