@@ -52,7 +52,8 @@ public class RuntimeConfigurable implements Serializable { | |||
private String elementTag = null; | |||
/** List of child element wrappers. */ | |||
private List<RuntimeConfigurable> children = null; | |||
// picking ArrayList rather than List as arrayList is Serializable | |||
private ArrayList<RuntimeConfigurable> children = null; | |||
/** The element to configure. It is only used during | |||
* maybeConfigure. | |||
@@ -589,7 +590,7 @@ public class RuntimeConfigurable implements Serializable { | |||
// Children (this is a shadow of UnknownElement#children) | |||
if (r.children != null) { | |||
List<RuntimeConfigurable> newChildren = new ArrayList<RuntimeConfigurable>(); | |||
ArrayList<RuntimeConfigurable> newChildren = new ArrayList<RuntimeConfigurable>(); | |||
newChildren.addAll(r.children); | |||
if (children != null) { | |||
newChildren.addAll(children); | |||
@@ -362,7 +362,7 @@ public final class SortFilter extends BaseParamFilterReader | |||
if (reverse) { | |||
Collections.sort(lines, new Comparator<String>() { | |||
public int compare(String s1, String s2) { | |||
return (-s1.compareTo(s2)); | |||
return (-s1.compareTo(s2)); //NOSONAR | |||
} | |||
}); | |||
} else { | |||
@@ -390,8 +390,7 @@ public class AntStructure extends Task { | |||
} catch (final IllegalAccessException ie) { | |||
sb.append("CDATA "); | |||
} | |||
} else if (type.getSuperclass() != null | |||
&& type.getSuperclass().getName().equals("java.lang.Enum")) { | |||
} else if (Enum.class.isAssignableFrom(type)) { | |||
try { | |||
final Object[] values = (Object[]) type.getMethod("values", (Class[]) null) | |||
.invoke(null, (Object[]) null); | |||
@@ -53,6 +53,7 @@ public class ExecuteJava implements Runnable, TimeoutObserver { | |||
private Long timeout = null; | |||
private volatile Throwable caught = null; | |||
private volatile boolean timedOut = false; | |||
private boolean done = false; | |||
private Thread thread = null; | |||
/** | |||
@@ -150,7 +151,7 @@ public class ExecuteJava implements Runnable, TimeoutObserver { | |||
+ " is not declared static"); | |||
} | |||
if (timeout == null) { | |||
run(); | |||
run(); //NOSONAR | |||
} else { | |||
thread = new Thread(this, "ExecuteJava"); | |||
Task currentThreadTask | |||
@@ -168,7 +169,9 @@ public class ExecuteJava implements Runnable, TimeoutObserver { | |||
thread.start(); | |||
w.start(); | |||
try { | |||
wait(); | |||
while (!done) { | |||
wait(); | |||
} | |||
} catch (InterruptedException e) { | |||
// ignore | |||
} | |||
@@ -228,6 +231,7 @@ public class ExecuteJava implements Runnable, TimeoutObserver { | |||
perm.restoreSecurityManager(); | |||
} | |||
synchronized (this) { | |||
done = true; | |||
notifyAll(); | |||
} | |||
} | |||
@@ -243,6 +247,7 @@ public class ExecuteJava implements Runnable, TimeoutObserver { | |||
timedOut = true; | |||
thread.interrupt(); | |||
} | |||
done = true; | |||
notifyAll(); | |||
} | |||
@@ -1066,7 +1066,7 @@ public class Manifest { | |||
try { | |||
write(new PrintWriter(sw)); | |||
} catch (IOException e) { | |||
return null; | |||
return ""; | |||
} | |||
return sw.toString(); | |||
} | |||
@@ -312,7 +312,13 @@ public class Parallel extends Task | |||
Thread timeoutThread = new Thread() { | |||
public synchronized void run() { | |||
try { | |||
wait(timeout); | |||
final long start = System.currentTimeMillis(); | |||
final long end = start + timeout; | |||
long now = System.currentTimeMillis(); | |||
while (now < end) { | |||
wait(end - now); | |||
now = System.currentTimeMillis(); | |||
} | |||
synchronized (semaphore) { | |||
stillRunning = false; | |||
timedOut = true; | |||
@@ -352,7 +358,7 @@ public class Parallel extends Task | |||
// System.out.println("Thread " + i + " is still | |||
// alive "); | |||
// still running - wait for it | |||
semaphore.wait(); | |||
semaphore.wait(); //NOSONAR | |||
continue outer2; | |||
} | |||
} | |||
@@ -44,21 +44,16 @@ class ChangeLogParser { | |||
private static final int GET_REVISION = 4; | |||
private static final int GET_PREVIOUS_REV = 5; | |||
// FIXME formatters are not thread-safe | |||
/** input format for dates read in from cvs log */ | |||
private static final SimpleDateFormat INPUT_DATE | |||
private final SimpleDateFormat inputDate | |||
= new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.US); | |||
/** | |||
* New formatter used to parse CVS date/timestamp. | |||
*/ | |||
private static final SimpleDateFormat CVS1129_INPUT_DATE = | |||
private final SimpleDateFormat cvs1129InputDate = | |||
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z", Locale.US); | |||
static { | |||
TimeZone utc = TimeZone.getTimeZone("UTC"); | |||
INPUT_DATE.setTimeZone(utc); | |||
CVS1129_INPUT_DATE.setTimeZone(utc); | |||
} | |||
//The following is data used while processing stdout of CVS command | |||
@@ -102,6 +97,10 @@ class ChangeLogParser { | |||
for (int i = 0; i < moduleNames.length; i++) { | |||
moduleNameLengths[i] = moduleNames[i].length(); | |||
} | |||
TimeZone utc = TimeZone.getTimeZone("UTC"); | |||
inputDate.setTimeZone(utc); | |||
cvs1129InputDate.setTimeZone(utc); | |||
} | |||
/** | |||
@@ -297,10 +296,10 @@ class ChangeLogParser { | |||
*/ | |||
private Date parseDate(final String date) { | |||
try { | |||
return INPUT_DATE.parse(date); | |||
return inputDate.parse(date); | |||
} catch (ParseException e) { | |||
try { | |||
return CVS1129_INPUT_DATE.parse(date); | |||
return cvs1129InputDate.parse(date); | |||
} catch (ParseException e2) { | |||
throw new IllegalStateException("Invalid date format: " + date); | |||
} | |||
@@ -34,18 +34,18 @@ import org.w3c.dom.Element; | |||
*/ | |||
public class ChangeLogWriter { | |||
/** output format for dates written to xml file */ | |||
private static final SimpleDateFormat OUTPUT_DATE | |||
private final SimpleDateFormat outputDate | |||
= new SimpleDateFormat("yyyy-MM-dd"); | |||
/** output format for times written to xml file */ | |||
private static final SimpleDateFormat OUTPUT_TIME | |||
private static SimpleDateFormat outputTime | |||
= new SimpleDateFormat("HH:mm"); | |||
/** stateless helper for writing the XML document */ | |||
private static final DOMElementWriter DOM_WRITER = new DOMElementWriter(); | |||
static { | |||
public ChangeLogWriter() { | |||
TimeZone utc = TimeZone.getTimeZone("UTC"); | |||
OUTPUT_DATE.setTimeZone(utc); | |||
OUTPUT_TIME.setTimeZone(utc); | |||
outputDate.setTimeZone(utc); | |||
outputTime.setTimeZone(utc); | |||
} | |||
/** | |||
@@ -87,9 +87,9 @@ public class ChangeLogWriter { | |||
final CVSEntry entry) throws IOException { | |||
Element ent = doc.createElement("entry"); | |||
DOMUtils.appendTextElement(ent, "date", | |||
OUTPUT_DATE.format(entry.getDate())); | |||
outputDate.format(entry.getDate())); | |||
DOMUtils.appendTextElement(ent, "time", | |||
OUTPUT_TIME.format(entry.getDate())); | |||
outputTime.format(entry.getDate())); | |||
DOMUtils.appendCDATAElement(ent, "author", entry.getAuthor()); | |||
final Enumeration enumeration = entry.getFiles().elements(); | |||
@@ -440,6 +440,24 @@ public class EchoProperties extends Task { | |||
Tuple that = (Tuple) o; | |||
return key.compareTo(that.key); | |||
} | |||
@Override | |||
public boolean equals(Object o) { | |||
if (o == this) { | |||
return true; | |||
} | |||
if (o == null || o.getClass() != getClass()) { | |||
return false; | |||
} | |||
Tuple that = (Tuple) o; | |||
return (key == null ? that.key == null : key.equals(that.key)) | |||
&& (value == null ? that.value == null : value.equals(that.value)); | |||
} | |||
@Override | |||
public int hashCode() { | |||
return key != null ? key.hashCode() : 0; | |||
} | |||
} | |||
private List sortProperties(Properties props) { | |||
@@ -335,7 +335,7 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware | |||
} | |||
if (traceConfiguration != null) { | |||
if ("org.apache.xalan.transformer.TransformerImpl" | |||
if ("org.apache.xalan.transformer.TransformerImpl" //NOSONAR | |||
.equals(transformer.getClass().getName())) { | |||
try { | |||
final Class traceSupport = | |||
@@ -67,7 +67,7 @@ public class KaffeRmic extends DefaultRmicAdapter { | |||
} | |||
cmd.setExecutable(c.getName()); | |||
if (!c.getName().equals(RMIC_CLASSNAMES[RMIC_CLASSNAMES.length - 1])) { | |||
if (!c.getName().equals(RMIC_CLASSNAMES[RMIC_CLASSNAMES.length - 1])) { //NOSONAR | |||
// only supported since Kaffe 1.1.2 | |||
cmd.createArgument().setValue("-verbose"); | |||
getRmic().log(Commandline.describeCommand(cmd)); | |||
@@ -27,8 +27,7 @@ import org.apache.tools.ant.Project; | |||
* An AntFilterReader is a wrapper class that encloses the classname | |||
* and configuration of a Configurable FilterReader. | |||
*/ | |||
public final class AntFilterReader | |||
extends DataType implements Cloneable { | |||
public final class AntFilterReader extends DataType { | |||
private String className; | |||
@@ -45,8 +45,7 @@ import org.apache.tools.ant.filters.TokenFilter; | |||
* FilterChain may contain a chained set of filter readers. | |||
* | |||
*/ | |||
public class FilterChain extends DataType | |||
implements Cloneable { | |||
public class FilterChain extends DataType { | |||
private Vector<Object> filterReaders = new Vector<Object>(); | |||
@@ -30,7 +30,7 @@ import org.apache.tools.ant.util.FileNameMapper; | |||
* Element to define a FileNameMapper. | |||
* | |||
*/ | |||
public class Mapper extends DataType implements Cloneable { | |||
public class Mapper extends DataType { | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
protected MapperType type = null; | |||
@@ -302,7 +302,7 @@ public class Permissions { | |||
* @param perm The permission to check against. | |||
*/ | |||
boolean matches(final java.security.Permission perm) { | |||
if (!className.equals(perm.getClass().getName())) { | |||
if (!className.equals(perm.getClass().getName())) { //NOSONAR | |||
return false; | |||
} | |||
if (name != null) { | |||
@@ -119,7 +119,7 @@ import org.xml.sax.XMLReader; | |||
* | |||
*/ | |||
public class XMLCatalog extends DataType | |||
implements Cloneable, EntityResolver, URIResolver { | |||
implements EntityResolver, URIResolver { | |||
/** helper for some File.toURL connversions */ | |||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||
@@ -216,7 +216,7 @@ public abstract class ArchiveResource extends Resource { | |||
if (isReference()) { | |||
return getCheckedRef().equals(another); | |||
} | |||
if (another == null || !(another.getClass().equals(getClass()))) { | |||
if (another == null || another.getClass() != getClass()) { | |||
return false; | |||
} | |||
ArchiveResource r = (ArchiveResource) another; | |||
@@ -95,7 +95,7 @@ public class MappedResource extends ResourceDecorator { | |||
*/ | |||
@Override | |||
public boolean equals(Object other) { | |||
if (other == null || !other.getClass().equals(getClass())) { | |||
if (other == null || other.getClass() != getClass()) { | |||
return false; | |||
} | |||
MappedResource m = (MappedResource) other; | |||
@@ -74,6 +74,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* Get the name of the resource. | |||
* @return the name of the wrapped resource. | |||
*/ | |||
@Override | |||
public String getName() { | |||
return getResource().getName(); | |||
} | |||
@@ -82,6 +83,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* The exists attribute tells whether a file exists. | |||
* @return true if this resource exists. | |||
*/ | |||
@Override | |||
public boolean isExists() { | |||
return getResource().isExists(); | |||
} | |||
@@ -92,6 +94,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* @return 0 if the resource does not exist to mirror the behavior | |||
* of {@link java.io.File File}. | |||
*/ | |||
@Override | |||
public long getLastModified() { | |||
return getResource().getLastModified(); | |||
} | |||
@@ -100,6 +103,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* Tells if the resource is a directory. | |||
* @return boolean flag indicating if the resource is a directory. | |||
*/ | |||
@Override | |||
public boolean isDirectory() { | |||
return getResource().isDirectory(); | |||
} | |||
@@ -109,6 +113,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* @return the size, as a long, 0 if the Resource does not exist (for | |||
* compatibility with java.io.File), or UNKNOWN_SIZE if not known. | |||
*/ | |||
@Override | |||
public long getSize() { | |||
return getResource().getSize(); | |||
} | |||
@@ -121,6 +126,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* @throws UnsupportedOperationException if InputStreams are not | |||
* supported for this Resource type. | |||
*/ | |||
@Override | |||
public InputStream getInputStream() throws IOException { | |||
return getResource().getInputStream(); | |||
} | |||
@@ -133,6 +139,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* @throws UnsupportedOperationException if OutputStreams are not | |||
* supported for this Resource type. | |||
*/ | |||
@Override | |||
public OutputStream getOutputStream() throws IOException { | |||
return getResource().getOutputStream(); | |||
} | |||
@@ -141,6 +148,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* Fulfill the ResourceCollection contract. | |||
* @return whether this Resource is a FileProvider. | |||
*/ | |||
@Override | |||
public boolean isFilesystemOnly() { | |||
return as(FileProvider.class) != null; | |||
} | |||
@@ -149,6 +157,7 @@ public abstract class ResourceDecorator extends Resource { | |||
* Overrides the base version. | |||
* @param r the Reference to set. | |||
*/ | |||
@Override | |||
public void setRefid(Reference r) { | |||
if (resource != null) { | |||
throw noChildrenAllowed(); | |||
@@ -159,6 +168,7 @@ public abstract class ResourceDecorator extends Resource { | |||
/** | |||
* {@inheritDoc} | |||
*/ | |||
@Override | |||
public <T> T as(Class<T> clazz) { | |||
return getResource().as(clazz); | |||
} | |||
@@ -166,6 +176,7 @@ public abstract class ResourceDecorator extends Resource { | |||
/** | |||
* {@inheritDoc} | |||
*/ | |||
@Override | |||
public int compareTo(Resource other) { | |||
if (other == this) { | |||
return 0; | |||
@@ -181,7 +192,9 @@ public abstract class ResourceDecorator extends Resource { | |||
* Get the hash code for this Resource. | |||
* @return hash code as int. | |||
*/ | |||
public int hashCode() { | |||
@Override | |||
public int hashCode() { // NOSONAR | |||
// super.equals + compareTo are consistent with this implementation | |||
return (getClass().hashCode() << 4) | getResource().hashCode(); | |||
} | |||
@@ -267,4 +280,5 @@ public abstract class ResourceDecorator extends Resource { | |||
throw new BuildException("you can't change the size of a " | |||
+ getDataTypeName()); | |||
} | |||
} |
@@ -71,6 +71,7 @@ public class StringResource extends Resource { | |||
* Enforce String immutability. | |||
* @param s the new name/value for this StringResource. | |||
*/ | |||
@Override | |||
public synchronized void setName(String s) { | |||
if (getName() != null) { | |||
throw new BuildException(new ImmutableResourceException()); | |||
@@ -90,6 +91,7 @@ public class StringResource extends Resource { | |||
* Synchronize access. | |||
* @return the name/value of this StringResource. | |||
*/ | |||
@Override | |||
public synchronized String getName() { | |||
return super.getName(); | |||
} | |||
@@ -107,6 +109,7 @@ public class StringResource extends Resource { | |||
* | |||
* @return true if this resource exists. | |||
*/ | |||
@Override | |||
public boolean isExists() { | |||
return getValue() != null; | |||
} | |||
@@ -144,6 +147,7 @@ public class StringResource extends Resource { | |||
* @return the size, as a long, 0 if the Resource does not exist (for | |||
* compatibility with java.io.File), or UNKNOWN_SIZE if not known. | |||
*/ | |||
@Override | |||
public synchronized long getSize() { | |||
return isReference() ? ((Resource) getCheckedRef()).getSize() | |||
: getContent().length(); | |||
@@ -153,7 +157,9 @@ public class StringResource extends Resource { | |||
* Get the hash code for this Resource. | |||
* @return hash code as int. | |||
*/ | |||
@Override | |||
public synchronized int hashCode() { | |||
// super.equals + super.compareTo are consistent with this implementation | |||
if (isReference()) { | |||
return getCheckedRef().hashCode(); | |||
} | |||
@@ -166,6 +172,7 @@ public class StringResource extends Resource { | |||
* @return the string contents of the resource. | |||
* @since Ant 1.7 | |||
*/ | |||
@Override | |||
public String toString() { | |||
return String.valueOf(getContent()); | |||
} | |||
@@ -178,6 +185,7 @@ public class StringResource extends Resource { | |||
* @throws UnsupportedOperationException if InputStreams are not | |||
* supported for this Resource type. | |||
*/ | |||
@Override | |||
public synchronized InputStream getInputStream() throws IOException { | |||
if (isReference()) { | |||
return ((Resource) getCheckedRef()).getInputStream(); | |||
@@ -198,6 +206,7 @@ public class StringResource extends Resource { | |||
* @throws UnsupportedOperationException if OutputStreams are not | |||
* supported for this Resource type. | |||
*/ | |||
@Override | |||
public synchronized OutputStream getOutputStream() throws IOException { | |||
if (isReference()) { | |||
return ((Resource) getCheckedRef()).getOutputStream(); | |||
@@ -212,6 +221,7 @@ public class StringResource extends Resource { | |||
* Overrides the super version. | |||
* @param r the Reference to set. | |||
*/ | |||
@Override | |||
public void setRefid(Reference r) { | |||
if (encoding != DEFAULT_ENCODING) { | |||
throw tooManyAttributes(); | |||
@@ -250,6 +260,7 @@ public class StringResource extends Resource { | |||
baos = (ByteArrayOutputStream) out; | |||
} | |||
@Override | |||
public void close() throws IOException { | |||
super.close(); | |||
String result = encoding == null | |||
@@ -313,7 +313,7 @@ public class URLResource extends Resource implements URLProvider { | |||
if (isReference()) { | |||
return getCheckedRef().equals(another); | |||
} | |||
if (another == null || !(another.getClass().equals(getClass()))) { | |||
if (another == null || another.getClass() != getClass()) { | |||
return false; | |||
} | |||
URLResource otheru = (URLResource) another; | |||
@@ -143,8 +143,14 @@ public class OutputStreamFunneler { | |||
if (!funnel.closed) { | |||
try { | |||
if (timeoutMillis > 0) { | |||
final long start = System.currentTimeMillis(); | |||
final long end = start + timeoutMillis; | |||
long now = System.currentTimeMillis(); | |||
try { | |||
wait(timeoutMillis); | |||
while (now < end) { | |||
wait(end - now); | |||
now = System.currentTimeMillis(); | |||
} | |||
} catch (InterruptedException eyeEx) { | |||
//ignore | |||
} | |||
@@ -72,7 +72,7 @@ public class ResourceUtils { | |||
*/ | |||
public static final String ISO_8859_1 = "ISO-8859-1"; | |||
private static final long MAX_IO_CHUNK_SIZE = 16*1024*1024; // 16 MB | |||
private static final long MAX_IO_CHUNK_SIZE = 16*1024*1024l; // 16 MB | |||
/** | |||
* Tells which source files should be reprocessed based on the | |||
@@ -630,7 +630,7 @@ public class ResourceUtils { | |||
} | |||
expected = in1.readLine(); | |||
} | |||
return in2.readLine() == null ? 0 : -1; | |||
return in2.readLine() == null ? 0 : -1; //NOSONAR | |||
} finally { | |||
FileUtils.close(in1); | |||
FileUtils.close(in2); | |||
@@ -117,9 +117,13 @@ public class WorkerAnt extends Thread { | |||
* @throws InterruptedException if the execution was interrupted | |||
*/ | |||
public void waitUntilFinished(long timeout) throws InterruptedException { | |||
final long start = System.currentTimeMillis(); | |||
final long end = start + timeout; | |||
synchronized (notify) { | |||
if (!finished) { | |||
notify.wait(timeout); | |||
long now = System.currentTimeMillis(); | |||
while (!finished && now < end) { | |||
notify.wait(end - now); | |||
now = System.currentTimeMillis(); | |||
} | |||
} | |||
} | |||
@@ -975,7 +975,7 @@ class BlockSort { | |||
runningOrder[i] = i; | |||
} | |||
for (int h = 364; h != 1;) { | |||
for (int h = 364; h != 1;) { //NOSONAR | |||
h /= 3; | |||
for (int i = h; i <= 255; i++) { | |||
final int vv = runningOrder[i]; | |||
@@ -191,7 +191,7 @@ public class TarUtils { | |||
if (negative) { | |||
// 2's complement | |||
val--; | |||
val ^= (long) Math.pow(2, (length - 1) * 8) - 1; | |||
val ^= (long) Math.pow(2, (length - 1) * 8.0) - 1; | |||
} | |||
return negative ? -val : val; | |||
} | |||
@@ -28,8 +28,8 @@ import java.util.zip.ZipException; | |||
public class UnsupportedZipFeatureException extends ZipException { | |||
private final Feature reason; | |||
private final ZipEntry entry; | |||
private static final long serialVersionUID = 4430521921766595597L; | |||
private transient final ZipEntry entry; | |||
private static final long serialVersionUID = 20161221L; | |||
/** | |||
* Creates an exception. | |||
@@ -61,7 +61,7 @@ public class UnsupportedZipFeatureException extends ZipException { | |||
/** | |||
* ZIP Features that may or may not be supported. | |||
*/ | |||
public static class Feature { | |||
public static class Feature implements java.io.Serializable { | |||
/** | |||
* The entry is encrypted. | |||
*/ | |||
@@ -86,4 +86,4 @@ public class UnsupportedZipFeatureException extends ZipException { | |||
return name; | |||
} | |||
} | |||
} | |||
} |