| @@ -126,9 +126,8 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo | |||
| * @return <code>true</code> if there are more elements in the | |||
| * enumeration; <code>false</code> otherwise. | |||
| */ | |||
| @Override | |||
| public boolean hasMoreElements() { | |||
| return this.nextResource != null; | |||
| return (this.nextResource != null); | |||
| } | |||
| /** | |||
| @@ -136,7 +135,6 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo | |||
| * | |||
| * @return the next resource in the enumeration | |||
| */ | |||
| @Override | |||
| public URL nextElement() { | |||
| final URL ret = this.nextResource; | |||
| if (ret == null) { | |||
| @@ -371,8 +369,8 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo | |||
| } catch (final BuildException e) { | |||
| // ignore path elements which are invalid | |||
| // relative to the project | |||
| log("Ignoring path element " + pathElement + " from " | |||
| + "classpath due to exception " + e, Project.MSG_DEBUG); | |||
| log("Ignoring path element " + pathElement + " from " + | |||
| "classpath due to exception " + e, Project.MSG_DEBUG); | |||
| } | |||
| } | |||
| } | |||
| @@ -586,25 +584,27 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo | |||
| final Constructor<?>[] cons = theClass.getDeclaredConstructors(); | |||
| //At least one constructor is guaranteed to be there, but check anyway. | |||
| if (cons != null && cons.length > 0 && cons[0] != null) { | |||
| final String[] strs = new String[NUMBER_OF_STRINGS]; | |||
| try { | |||
| cons[0].newInstance((Object[]) strs); | |||
| // Expecting an exception to be thrown by this call: | |||
| // IllegalArgumentException: wrong number of Arguments | |||
| } catch (final Exception e) { | |||
| // Ignore - we are interested only in the side | |||
| // effect - that of getting the static initializers | |||
| // invoked. As we do not want to call a valid | |||
| // constructor to get this side effect, an | |||
| // attempt is made to call a hopefully | |||
| // invalid constructor - come on, nobody | |||
| // would have a constructor that takes in | |||
| // 256 String arguments ;-) | |||
| // (In fact, they can't - according to JVM spec | |||
| // section 4.10, the number of method parameters is limited | |||
| // to 255 by the definition of a method descriptor. | |||
| // Constructors count as methods here.) | |||
| if (cons != null) { | |||
| if (cons.length > 0 && cons[0] != null) { | |||
| final String[] strs = new String[NUMBER_OF_STRINGS]; | |||
| try { | |||
| cons[0].newInstance((Object[]) strs); | |||
| // Expecting an exception to be thrown by this call: | |||
| // IllegalArgumentException: wrong number of Arguments | |||
| } catch (final Exception e) { | |||
| // Ignore - we are interested only in the side | |||
| // effect - that of getting the static initializers | |||
| // invoked. As we do not want to call a valid | |||
| // constructor to get this side effect, an | |||
| // attempt is made to call a hopefully | |||
| // invalid constructor - come on, nobody | |||
| // would have a constructor that takes in | |||
| // 256 String arguments ;-) | |||
| // (In fact, they can't - according to JVM spec | |||
| // section 4.10, the number of method parameters is limited | |||
| // to 255 by the definition of a method descriptor. | |||
| // Constructors count as methods here.) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1523,7 +1523,6 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo | |||
| } | |||
| /** {@inheritDoc} */ | |||
| @Override | |||
| public void close() { | |||
| cleanup(); | |||
| } | |||
| @@ -315,7 +315,8 @@ public class AntTypeDefinition { | |||
| noArg = false; | |||
| } | |||
| //now we instantiate | |||
| T o = ctor.newInstance(noArg ? new Object[0] : new Object[] {project}); | |||
| T o = ctor.newInstance( | |||
| ((noArg) ? new Object[0] : new Object[] {project})); | |||
| //set up project references. | |||
| project.setProjectReference(o); | |||
| @@ -330,12 +331,12 @@ public class AntTypeDefinition { | |||
| * @return true if the definitions are the same. | |||
| */ | |||
| public boolean sameDefinition(AntTypeDefinition other, Project project) { | |||
| return other != null && other.getClass() == getClass() | |||
| return (other != null && other.getClass() == getClass() | |||
| && other.getTypeClass(project).equals(getTypeClass(project)) | |||
| && other.getExposedClass(project).equals(getExposedClass(project)) | |||
| && other.restrict == restrict | |||
| && other.adapterClass == adapterClass | |||
| && other.adaptToClass == adaptToClass; | |||
| && other.adaptToClass == adaptToClass); | |||
| } | |||
| /** | |||
| @@ -141,7 +141,6 @@ public class BuildException extends RuntimeException { | |||
| * | |||
| * @return the location of the error and the error message | |||
| */ | |||
| @Override | |||
| public String toString() { | |||
| return location.toString() + getMessage(); | |||
| } | |||
| @@ -710,9 +710,9 @@ public class ComponentHelper { | |||
| } | |||
| Class<?> oldClass = old.getExposedClass(project); | |||
| boolean isTask = oldClass != null && Task.class.isAssignableFrom(oldClass); | |||
| project.log(String.format("Trying to override old definition of %s %s", | |||
| isTask ? "task" : "datatype", name), def.similarDefinition(old, | |||
| project) ? Project.MSG_VERBOSE : Project.MSG_WARN); | |||
| project.log("Trying to override old definition of " | |||
| + (isTask ? "task " : "datatype ") + name, (def.similarDefinition(old, | |||
| project)) ? Project.MSG_VERBOSE : Project.MSG_WARN); | |||
| } | |||
| project.log(" +Datatype " + name + " " + def.getClassName(), Project.MSG_DEBUG); | |||
| antTypeTable.put(name, def); | |||
| @@ -1245,8 +1245,8 @@ public class DirectoryScanner | |||
| continue; | |||
| } | |||
| } catch (IOException e) { | |||
| System.err.println("Failed to determine if " + file + " causes a " | |||
| + "filesystem loop due to symbolic link; continuing"); | |||
| System.err.println("Failed to determine if " + file + " causes a " + | |||
| "filesystem loop due to symbolic link; continuing"); | |||
| } | |||
| final String[] children = file.list(); | |||
| @@ -29,7 +29,6 @@ public interface Evaluable<T> extends Supplier<T> { | |||
| T eval(); | |||
| @Override | |||
| default T get() { | |||
| return eval(); | |||
| } | |||
| @@ -218,12 +218,11 @@ public final class IntrospectionHelper { | |||
| */ | |||
| continue; | |||
| } | |||
| if (File.class.equals(args[0]) | |||
| && (Resource.class.equals(as.type) || FileProvider.class.equals(as.type))) { | |||
| /* | |||
| Ant Resources/FileProviders override java.io.File | |||
| */ | |||
| continue; | |||
| if (File.class.equals(args[0])) { | |||
| // Ant Resources/FileProviders override java.io.File | |||
| if (Resource.class.equals(as.type) || FileProvider.class.equals(as.type)) { | |||
| continue; | |||
| } | |||
| } | |||
| /* | |||
| In cases other than those just explicitly covered, | |||
| @@ -737,8 +737,10 @@ public class Main implements AntMain { | |||
| for (final ArgumentProcessor processor : processorRegistry.getProcessors()) { | |||
| final List<String> extraArgs = extraArguments.get(processor.getClass()); | |||
| if (extraArgs != null && processor.handleArg(extraArgs)) { | |||
| return; | |||
| if (extraArgs != null) { | |||
| if (processor.handleArg(extraArgs)) { | |||
| return; | |||
| } | |||
| } | |||
| } | |||
| @@ -808,8 +810,10 @@ public class Main implements AntMain { | |||
| for (final ArgumentProcessor processor : processorRegistry.getProcessors()) { | |||
| final List<String> extraArgs = extraArguments.get(processor.getClass()); | |||
| if (extraArgs != null && processor.handleArg(project, extraArgs)) { | |||
| return; | |||
| if (extraArgs != null) { | |||
| if (processor.handleArg(project, extraArgs)) { | |||
| return; | |||
| } | |||
| } | |||
| } | |||
| @@ -821,8 +825,10 @@ public class Main implements AntMain { | |||
| } | |||
| // make sure that we have a target to execute | |||
| if (targets.isEmpty() && project.getDefaultTarget() != null) { | |||
| targets.addElement(project.getDefaultTarget()); | |||
| if (targets.isEmpty()) { | |||
| if (project.getDefaultTarget() != null) { | |||
| targets.addElement(project.getDefaultTarget()); | |||
| } | |||
| } | |||
| project.executeTargets(targets); | |||
| @@ -1060,8 +1066,10 @@ public class Main implements AntMain { | |||
| props.load(in); | |||
| in.close(); | |||
| shortAntVersion = props.getProperty("VERSION"); | |||
| antVersion = "Apache Ant(TM) version " + shortAntVersion | |||
| + " compiled on " + props.getProperty("DATE"); | |||
| antVersion = "Apache Ant(TM) version " + | |||
| shortAntVersion + | |||
| " compiled on " + | |||
| props.getProperty("DATE"); | |||
| } catch (final IOException ioe) { | |||
| throw new BuildException("Could not load the version information:" | |||
| + ioe.getMessage()); | |||
| @@ -268,7 +268,7 @@ public class Project implements ResourceFactory { | |||
| public Project createSubProject() { | |||
| Project subProject = null; | |||
| try { | |||
| subProject = getClass().newInstance(); | |||
| subProject = (getClass().newInstance()); | |||
| } catch (final Exception e) { | |||
| subProject = new Project(); | |||
| } | |||
| @@ -927,7 +927,7 @@ public class Project implements ResourceFactory { | |||
| throw new BuildException("Ant cannot work on Java prior to 1.8"); | |||
| } | |||
| log("Detected Java version: " + javaVersion + " in: " | |||
| + JavaEnvUtils.getJavaHome(), MSG_VERBOSE); | |||
| + System.getProperty("java.home"), MSG_VERBOSE); | |||
| log("Detected OS: " + System.getProperty("os.name"), MSG_VERBOSE); | |||
| } | |||
| @@ -1716,9 +1716,9 @@ public class Project implements ResourceFactory { | |||
| * <code>false</code> otherwise. | |||
| */ | |||
| public static boolean toBoolean(final String s) { | |||
| return "on".equalsIgnoreCase(s) | |||
| return ("on".equalsIgnoreCase(s) | |||
| || "true".equalsIgnoreCase(s) | |||
| || "yes".equalsIgnoreCase(s); | |||
| || "yes".equalsIgnoreCase(s)); | |||
| } | |||
| /** | |||
| @@ -1828,7 +1828,7 @@ public class Project implements ResourceFactory { | |||
| .collect(Collectors.joining(",")) | |||
| + " is " + ret, MSG_VERBOSE); | |||
| final Vector<Target> complete = returnAll ? ret : new Vector<>(ret); | |||
| final Vector<Target> complete = (returnAll) ? ret : new Vector<>(ret); | |||
| for (final String curTarget : targetTable.keySet()) { | |||
| final String st = state.get(curTarget); | |||
| if (st == null) { | |||
| @@ -128,7 +128,6 @@ public class ProjectHelper { | |||
| return name; | |||
| } | |||
| @Override | |||
| public String toString() { | |||
| return name; | |||
| } | |||
| @@ -144,7 +144,8 @@ public class PropertyHelper implements GetProperty { | |||
| * @param propertyHelper the invoking PropertyHelper. | |||
| * @return true if this entity 'owns' the property. | |||
| */ | |||
| boolean setNew(String property, Object value, PropertyHelper propertyHelper); | |||
| boolean setNew( | |||
| String property, Object value, PropertyHelper propertyHelper); | |||
| /** | |||
| * Set a property. | |||
| @@ -156,7 +157,8 @@ public class PropertyHelper implements GetProperty { | |||
| * @param propertyHelper the invoking PropertyHelper. | |||
| * @return true if this entity 'owns' the property. | |||
| */ | |||
| boolean set(String property, Object value, PropertyHelper propertyHelper); | |||
| boolean set( | |||
| String property, Object value, PropertyHelper propertyHelper); | |||
| } | |||
| //TODO PropertyEnumerator Delegate type, would improve PropertySet | |||
| @@ -171,7 +173,6 @@ public class PropertyHelper implements GetProperty { | |||
| private final String PREFIX = "toString:"; | |||
| private final int PREFIX_LEN = PREFIX.length(); | |||
| @Override | |||
| public Object evaluate(String property, PropertyHelper propertyHelper) { | |||
| Object o = null; | |||
| if (property.startsWith(PREFIX) && propertyHelper.getProject() != null) { | |||
| @@ -181,15 +182,18 @@ public class PropertyHelper implements GetProperty { | |||
| } | |||
| }; | |||
| private static final PropertyExpander DEFAULT_EXPANDER = (s, pos, notUsed) -> { | |||
| private static final PropertyExpander DEFAULT_EXPANDER = | |||
| (s, pos, notUsed) -> { | |||
| int index = pos.getIndex(); | |||
| //directly check near, triggering characters: | |||
| if (s.length() - index >= 3 && '$' == s.charAt(index) && '{' == s.charAt(index + 1)) { | |||
| if (s.length() - index >= 3 && '$' == s.charAt(index) | |||
| && '{' == s.charAt(index + 1)) { | |||
| int start = index + 2; | |||
| //defer to String.indexOf() for protracted check: | |||
| int end = s.indexOf('}', start); | |||
| if (end < 0) { | |||
| throw new BuildException("Syntax error in property: " + s.substring(index)); | |||
| throw new BuildException( | |||
| "Syntax error in property: " + s.substring(index)); | |||
| } | |||
| pos.setIndex(end + 1); | |||
| return start == end ? "" : s.substring(start, end); | |||
| @@ -198,16 +202,19 @@ public class PropertyHelper implements GetProperty { | |||
| }; | |||
| /** dummy */ | |||
| private static final PropertyExpander SKIP_DOUBLE_DOLLAR = (s, pos, notUsed) -> { | |||
| private static final PropertyExpander SKIP_DOUBLE_DOLLAR = | |||
| (s, pos, notUsed) -> { | |||
| int index = pos.getIndex(); | |||
| /* check for $$; if found, advance by one-- | |||
| * this expander is at the bottom of the stack | |||
| * and will thus be the last consulted, | |||
| * so the next thing that ParseProperties will do | |||
| * is advance the parse position beyond the second $ | |||
| */ | |||
| if (s.length() - index >= 2 && '$' == s.charAt(index) && '$' == s.charAt(++index)) { | |||
| pos.setIndex(index); | |||
| if (s.length() - index >= 2) { | |||
| /* check for $$; if found, advance by one-- | |||
| * this expander is at the bottom of the stack | |||
| * and will thus be the last consulted, | |||
| * so the next thing that ParseProperties will do | |||
| * is advance the parse position beyond the second $ | |||
| */ | |||
| if ('$' == s.charAt(index) && '$' == s.charAt(++index)) { | |||
| pos.setIndex(index); | |||
| } | |||
| } | |||
| return null; | |||
| }; | |||
| @@ -219,7 +226,6 @@ public class PropertyHelper implements GetProperty { | |||
| private final String PREFIX = "ant.refid:"; | |||
| private final int PREFIX_LEN = PREFIX.length(); | |||
| @Override | |||
| public Object evaluate(String prop, PropertyHelper helper) { | |||
| return prop.startsWith(PREFIX) && helper.getProject() != null | |||
| ? helper.getProject().getReference(prop.substring(PREFIX_LEN)) | |||
| @@ -273,7 +279,8 @@ public class PropertyHelper implements GetProperty { | |||
| * @since Ant 1.8.0 | |||
| */ | |||
| public static Object getProperty(Project project, String name) { | |||
| return PropertyHelper.getPropertyHelper(project).getProperty(name); | |||
| return PropertyHelper.getPropertyHelper(project) | |||
| .getProperty(name); | |||
| } | |||
| /** | |||
| @@ -285,7 +292,8 @@ public class PropertyHelper implements GetProperty { | |||
| * @since Ant 1.8.0 | |||
| */ | |||
| public static void setProperty(Project project, String name, Object value) { | |||
| PropertyHelper.getPropertyHelper(project).setProperty(name, value, true); | |||
| PropertyHelper.getPropertyHelper(project) | |||
| .setProperty(name, value, true); | |||
| } | |||
| /** | |||
| @@ -296,8 +304,10 @@ public class PropertyHelper implements GetProperty { | |||
| * @param value the value to use. | |||
| * @since Ant 1.8.0 | |||
| */ | |||
| public static void setNewProperty(Project project, String name, Object value) { | |||
| PropertyHelper.getPropertyHelper(project).setNewProperty(name, value); | |||
| public static void setNewProperty( | |||
| Project project, String name, Object value) { | |||
| PropertyHelper.getPropertyHelper(project) | |||
| .setNewProperty(name, value); | |||
| } | |||
| //override facility for subclasses to put custom hashtables in | |||
| @@ -596,9 +596,11 @@ public class RuntimeConfigurable implements Serializable { | |||
| } | |||
| // Text | |||
| if (r.characters != null | |||
| && (characters == null || characters.toString().trim().isEmpty())) { | |||
| characters = new StringBuffer(r.characters.toString()); | |||
| if (r.characters != null) { | |||
| if (characters == null | |||
| || characters.toString().trim().isEmpty()) { | |||
| characters = new StringBuffer(r.characters.toString()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -346,14 +346,19 @@ public class UnknownElement extends Task { | |||
| RuntimeConfigurable childWrapper = parentWrapper.getChild(i); | |||
| UnknownElement child = it.next(); | |||
| try { | |||
| // fall tru and fail in handlechild (unsupported element) | |||
| if (!childWrapper.isEnabled(child) && ih.supportsNestedElement(parentUri, | |||
| ProjectHelper.genComponentName(child.getNamespace(), child.getTag()))) { | |||
| continue; | |||
| if (!childWrapper.isEnabled(child)) { | |||
| if (ih.supportsNestedElement( | |||
| parentUri, ProjectHelper.genComponentName( | |||
| child.getNamespace(), child.getTag()))) { | |||
| continue; | |||
| } | |||
| // fall tru and fail in handlechild (unsupported element) | |||
| } | |||
| if (!handleChild(parentUri, ih, parent, child, childWrapper)) { | |||
| if (!handleChild( | |||
| parentUri, ih, parent, child, childWrapper)) { | |||
| if (!(parent instanceof TaskContainer)) { | |||
| ih.throwNotSupported(getProject(), parent, child.getTag()); | |||
| ih.throwNotSupported(getProject(), parent, | |||
| child.getTag()); | |||
| } else { | |||
| // a task container - anything could happen - just add the | |||
| // child to the container | |||
| @@ -104,7 +104,7 @@ public class DispatchUtils { | |||
| } catch (InvocationTargetException ie) { | |||
| Throwable t = ie.getTargetException(); | |||
| if (t instanceof BuildException) { | |||
| throw (BuildException) t; | |||
| throw ((BuildException) t); | |||
| } else { | |||
| throw new BuildException(t); | |||
| } | |||
| @@ -78,7 +78,6 @@ public abstract class BaseFilterReader extends FilterReader { | |||
| * | |||
| * @exception IOException If an I/O error occurs | |||
| */ | |||
| @Override | |||
| public final int read(final char[] cbuf, final int off, | |||
| final int len) throws IOException { | |||
| for (int i = 0; i < len; i++) { | |||
| @@ -106,7 +105,6 @@ public abstract class BaseFilterReader extends FilterReader { | |||
| * @exception IllegalArgumentException If <code>n</code> is negative. | |||
| * @exception IOException If an I/O error occurs | |||
| */ | |||
| @Override | |||
| public final long skip(final long n) | |||
| throws IOException, IllegalArgumentException { | |||
| if (n < 0L) { | |||
| @@ -113,14 +113,16 @@ public final class ConcatFilter extends BaseParamFilterReader | |||
| if (ch == -1) { | |||
| ch = super.read(); | |||
| } | |||
| // don't call super.close() because that reader is used | |||
| // on other places ... | |||
| if (ch == -1 && appendReader != null) { | |||
| ch = appendReader.read(); | |||
| if (ch == -1) { | |||
| // I am the only one so I have to close the reader | |||
| appendReader.close(); | |||
| appendReader = null; | |||
| if (ch == -1) { | |||
| // don't call super.close() because that reader is used | |||
| // on other places ... | |||
| if (appendReader != null) { | |||
| ch = appendReader.read(); | |||
| if (ch == -1) { | |||
| // I am the only one so I have to close the reader | |||
| appendReader.close(); | |||
| appendReader = null; | |||
| } | |||
| } | |||
| } | |||
| @@ -442,47 +442,38 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina | |||
| return in instanceof SimpleFilterReader && ((SimpleFilterReader) in).editsBlocked(); | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| return preemptIndex > 0 ? preempt[--preemptIndex] : in.read(); | |||
| } | |||
| @Override | |||
| public void close() throws IOException { | |||
| in.close(); | |||
| } | |||
| @Override | |||
| public void reset() throws IOException { | |||
| in.reset(); | |||
| } | |||
| @Override | |||
| public boolean markSupported() { | |||
| return in.markSupported(); | |||
| } | |||
| @Override | |||
| public boolean ready() throws IOException { | |||
| return in.ready(); | |||
| } | |||
| @Override | |||
| public void mark(int i) throws IOException { | |||
| in.mark(i); | |||
| } | |||
| @Override | |||
| public long skip(long i) throws IOException { | |||
| return in.skip(i); | |||
| } | |||
| @Override | |||
| public int read(char[] buf) throws IOException { | |||
| return read(buf, 0, buf.length); | |||
| } | |||
| @Override | |||
| public int read(char[] buf, int start, int length) throws IOException { | |||
| int count = 0; | |||
| int c = 0; | |||
| @@ -521,12 +512,10 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina | |||
| state = JAVA; | |||
| } | |||
| @Override | |||
| public boolean editsBlocked() { | |||
| return editsBlocked || super.editsBlocked(); | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| int thisChar = super.read(); | |||
| // Mask, block from being edited, all characters in constants. | |||
| @@ -639,7 +628,6 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina | |||
| this.fixLast = fixLast; | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| int thisChar = super.read(); | |||
| @@ -716,7 +704,6 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina | |||
| super(in); | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| int thisChar = super.read(); | |||
| @@ -746,7 +733,6 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina | |||
| } | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| int lookAhead2 = super.read(); | |||
| @@ -771,7 +757,6 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina | |||
| this.tabLength = tabLength; | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| int c = super.read(); | |||
| @@ -851,7 +836,6 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina | |||
| this.tabLength = tabLength; | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| int c = super.read(); | |||
| @@ -203,13 +203,17 @@ public final class HeadFilter extends BaseParamFilterReader | |||
| */ | |||
| private String headFilter(String line) { | |||
| linesRead++; | |||
| if (skip > 0 && (linesRead - 1) < skip) { | |||
| return null; | |||
| if (skip > 0) { | |||
| if ((linesRead - 1) < skip) { | |||
| return null; | |||
| } | |||
| } | |||
| if (lines > 0 && linesRead > (lines + skip)) { | |||
| eof = true; | |||
| return null; | |||
| if (lines > 0) { | |||
| if (linesRead > (lines + skip)) { | |||
| eof = true; | |||
| return null; | |||
| } | |||
| } | |||
| return line; | |||
| } | |||
| @@ -93,30 +93,32 @@ public final class StripJavaComments | |||
| quoted = !quoted; | |||
| } else { | |||
| quoted = false; | |||
| if (!inString && ch == '/') { | |||
| ch = in.read(); | |||
| if (!inString) { | |||
| if (ch == '/') { | |||
| while (ch != '\n' && ch != -1 && ch != '\r') { | |||
| ch = in.read(); | |||
| } | |||
| } else if (ch == '*') { | |||
| while (ch != -1) { | |||
| ch = in.read(); | |||
| if (ch == '*') { | |||
| ch = in.read(); | |||
| if (ch == '/') { | |||
| while (ch != '\n' && ch != -1 && ch != '\r') { | |||
| ch = in.read(); | |||
| } | |||
| } else if (ch == '*') { | |||
| while (ch != -1) { | |||
| ch = in.read(); | |||
| while (ch == '*') { | |||
| if (ch == '*') { | |||
| ch = in.read(); | |||
| } | |||
| while (ch == '*') { | |||
| ch = in.read(); | |||
| } | |||
| if (ch == '/') { | |||
| ch = read(); | |||
| break; | |||
| if (ch == '/') { | |||
| ch = read(); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } else { | |||
| readAheadCh = ch; | |||
| ch = '/'; | |||
| } | |||
| } else { | |||
| readAheadCh = ch; | |||
| ch = '/'; | |||
| } | |||
| } | |||
| } | |||
| @@ -143,9 +143,11 @@ public final class TabsToSpaces | |||
| Parameter[] params = getParameters(); | |||
| if (params != null) { | |||
| for (Parameter param : params) { | |||
| if (param != null && TAB_LENGTH_KEY.equals(param.getName())) { | |||
| tabLength = Integer.parseInt(param.getValue()); | |||
| break; | |||
| if (param != null) { | |||
| if (TAB_LENGTH_KEY.equals(param.getName())) { | |||
| tabLength = Integer.parseInt(param.getValue()); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -40,7 +40,8 @@ import org.apache.tools.ant.util.regexp.RegexpUtil; | |||
| * @see ChainableReader | |||
| * @see org.apache.tools.ant.DynamicConfigurator | |||
| */ | |||
| public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| public class TokenFilter extends BaseFilterReader | |||
| implements ChainableReader { | |||
| /** | |||
| * string filters implement this interface | |||
| */ | |||
| @@ -365,7 +366,6 @@ public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| * @param line the string to be filtered | |||
| * @return the filtered line | |||
| */ | |||
| @Override | |||
| public String filter(String line) { | |||
| if (from == null) { | |||
| throw new BuildException("Missing from in stringreplace"); | |||
| @@ -420,7 +420,6 @@ public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| * @return null if the string does not contain "contains", | |||
| * string otherwise | |||
| */ | |||
| @Override | |||
| public String filter(String string) { | |||
| if (contains == null) { | |||
| throw new BuildException("Missing contains in containsstring"); | |||
| @@ -489,7 +488,6 @@ public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| * @param line the string to modify | |||
| * @return the modified string | |||
| */ | |||
| @Override | |||
| public String filter(String line) { | |||
| initialize(); | |||
| @@ -559,7 +557,6 @@ public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| * @param string the string to apply filter on | |||
| * @return the filtered string | |||
| */ | |||
| @Override | |||
| public String filter(String string) { | |||
| initialize(); | |||
| if (!regexp.matches(string, options)) { | |||
| @@ -579,7 +576,6 @@ public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| * @param line the string to be trimmed | |||
| * @return the trimmed string | |||
| */ | |||
| @Override | |||
| public String filter(String line) { | |||
| return line.trim(); | |||
| } | |||
| @@ -593,7 +589,6 @@ public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| * @param line the line to modify | |||
| * @return the trimmed line | |||
| */ | |||
| @Override | |||
| public String filter(String line) { | |||
| if (line.trim().isEmpty()) { | |||
| return null; | |||
| @@ -624,7 +619,6 @@ public class TokenFilter extends BaseFilterReader implements ChainableReader { | |||
| * @param string the string to remove the characters from | |||
| * @return the converted string | |||
| */ | |||
| @Override | |||
| public String filter(String string) { | |||
| StringBuffer output = new StringBuffer(string.length()); | |||
| for (int i = 0; i < string.length(); ++i) { | |||
| @@ -728,8 +728,10 @@ public class ProjectHelper2 extends ProjectHelper { | |||
| String value = attrs.getValue(i); | |||
| switch (attrs.getLocalName(i)) { | |||
| case "default": | |||
| if (value != null && !value.isEmpty() && !context.isIgnoringProjectTag()) { | |||
| project.setDefault(value); | |||
| if (value != null && !value.isEmpty()) { | |||
| if (!context.isIgnoringProjectTag()) { | |||
| project.setDefault(value); | |||
| } | |||
| } | |||
| break; | |||
| case "name": | |||
| @@ -739,21 +741,22 @@ public class ProjectHelper2 extends ProjectHelper { | |||
| if (!context.isIgnoringProjectTag()) { | |||
| project.setName(value); | |||
| project.addReference(value, project); | |||
| } else if (isInIncludeMode() && !value.isEmpty() | |||
| && getCurrentTargetPrefix() != null | |||
| && getCurrentTargetPrefix().endsWith( | |||
| ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX)) { | |||
| String newTargetPrefix = getCurrentTargetPrefix().replace( | |||
| ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX, value); | |||
| // help nested include tasks | |||
| setCurrentTargetPrefix(newTargetPrefix); | |||
| } else if (isInIncludeMode()) { | |||
| if (!value.isEmpty() && getCurrentTargetPrefix() != null | |||
| && getCurrentTargetPrefix().endsWith(ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX)) { | |||
| String newTargetPrefix = getCurrentTargetPrefix().replace(ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX, value); | |||
| // help nested include tasks | |||
| setCurrentTargetPrefix(newTargetPrefix); | |||
| } | |||
| } | |||
| } | |||
| break; | |||
| case "id": | |||
| // What's the difference between id and name ? | |||
| if (value != null && !context.isIgnoringProjectTag()) { | |||
| project.addReference(value, project); | |||
| if (value != null) { | |||
| // What's the difference between id and name ? | |||
| if (!context.isIgnoringProjectTag()) { | |||
| project.addReference(value, project); | |||
| } | |||
| } | |||
| break; | |||
| case "basedir": | |||
| @@ -1016,8 +1019,10 @@ public class ProjectHelper2 extends ProjectHelper { | |||
| project.addOrReplaceTarget(newName, newTarget); | |||
| } | |||
| if (extensionPointMissing != null && extensionPoint == null) { | |||
| throw new BuildException("onMissingExtensionPoint attribute cannot " | |||
| + "be specified unless extensionOf is specified", target.getLocation()); | |||
| throw new BuildException("onMissingExtensionPoint attribute cannot " + | |||
| "be specified unless extensionOf is specified", | |||
| target.getLocation()); | |||
| } | |||
| if (extensionPoint != null) { | |||
| ProjectHelper helper = | |||
| @@ -228,7 +228,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXParseException if this method is not overridden, or in | |||
| * case of error in an overridden version | |||
| */ | |||
| @Override | |||
| public void startElement(String tag, AttributeList attrs) throws SAXParseException { | |||
| throw new SAXParseException("Unexpected element \"" + tag + "\"", helperImpl.locator); | |||
| } | |||
| @@ -245,7 +244,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXParseException if this method is not overridden, or in | |||
| * case of error in an overridden version | |||
| */ | |||
| @Override | |||
| public void characters(char[] buf, int start, int count) throws SAXParseException { | |||
| String s = new String(buf, start, count).trim(); | |||
| @@ -265,7 +263,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXException in case of error (not thrown in | |||
| * this implementation) | |||
| */ | |||
| @Override | |||
| public void endElement(String name) throws SAXException { | |||
| // Let parent resume handling SAX events | |||
| helperImpl.parser.setDocumentHandler(parentHandler); | |||
| @@ -293,7 +290,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @param systemId The system identifier provided in the XML | |||
| * document. Will not be <code>null</code>. | |||
| */ | |||
| @Override | |||
| public InputSource resolveEntity(String publicId, String systemId) { | |||
| helperImpl.project.log("resolving systemId: " + systemId, Project.MSG_VERBOSE); | |||
| @@ -333,7 +329,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXParseException if the tag given is not | |||
| * <code>"project"</code> | |||
| */ | |||
| @Override | |||
| public void startElement(String tag, AttributeList attrs) throws SAXParseException { | |||
| if ("project".equals(tag)) { | |||
| new ProjectHandler(helperImpl, this).init(tag, attrs); | |||
| @@ -349,7 +344,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @param locator The locator used by the parser. | |||
| * Will not be <code>null</code>. | |||
| */ | |||
| @Override | |||
| public void setDocumentLocator(Locator locator) { | |||
| helperImpl.locator = locator; | |||
| } | |||
| @@ -465,7 +459,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * <code>"property"</code>, <code>"target"</code> | |||
| * or a data type definition | |||
| */ | |||
| @Override | |||
| public void startElement(String name, AttributeList attrs) throws SAXParseException { | |||
| if ("target".equals(name)) { | |||
| handleTarget(name, attrs); | |||
| @@ -603,7 +596,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXParseException if an error occurs when initialising | |||
| * the appropriate child handler | |||
| */ | |||
| @Override | |||
| public void startElement(String name, AttributeList attrs) throws SAXParseException { | |||
| handleElement(helperImpl, this, target, name, attrs); | |||
| } | |||
| @@ -654,7 +646,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @param start The start element in the array. | |||
| * @param count The number of characters to read from the array. | |||
| */ | |||
| @Override | |||
| public void characters(char[] buf, int start, int count) { | |||
| String text = new String(buf, start, count); | |||
| String currentDescription = helperImpl.project.getDescription(); | |||
| @@ -774,7 +765,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @param start The start element in the array. | |||
| * @param count The number of characters to read from the array. | |||
| */ | |||
| @Override | |||
| public void characters(char[] buf, int start, int count) { | |||
| wrapper.addText(buf, start, count); | |||
| } | |||
| @@ -792,7 +782,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXParseException if an error occurs when initialising | |||
| * the appropriate child handler | |||
| */ | |||
| @Override | |||
| public void startElement(String name, AttributeList attrs) throws SAXParseException { | |||
| if (task instanceof TaskContainer) { | |||
| // task can contain other tasks - no other nested elements possible | |||
| @@ -911,7 +900,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @param start The start element in the array. | |||
| * @param count The number of characters to read from the array. | |||
| */ | |||
| @Override | |||
| public void characters(char[] buf, int start, int count) { | |||
| childWrapper.addText(buf, start, count); | |||
| } | |||
| @@ -929,7 +917,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXParseException if an error occurs when initialising | |||
| * the appropriate child handler | |||
| */ | |||
| @Override | |||
| public void startElement(String name, AttributeList attrs) throws SAXParseException { | |||
| if (child instanceof TaskContainer) { | |||
| // taskcontainer nested element can contain other tasks - no other | |||
| @@ -1012,7 +999,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * | |||
| * @see ProjectHelper#addText(Project,Object,char[],int,int) | |||
| */ | |||
| @Override | |||
| public void characters(char[] buf, int start, int count) { | |||
| wrapper.addText(buf, start, count); | |||
| } | |||
| @@ -1029,7 +1015,6 @@ public class ProjectHelperImpl extends ProjectHelper { | |||
| * @exception SAXParseException if an error occurs when initialising | |||
| * the child handler | |||
| */ | |||
| @Override | |||
| public void startElement(String name, AttributeList attrs) throws SAXParseException { | |||
| new NestedElementHandler(helperImpl, this, element, wrapper, target).init(name, attrs); | |||
| } | |||
| @@ -143,13 +143,16 @@ public class MailLogger extends DefaultLogger { | |||
| } | |||
| Values values = new Values() | |||
| .mailhost(getValue(properties, "mailhost", "localhost")) | |||
| .port(Integer.parseInt(getValue(properties, "port", | |||
| String.valueOf(MailMessage.DEFAULT_PORT)))) | |||
| .port(Integer.parseInt( | |||
| getValue( | |||
| properties, "port", | |||
| String.valueOf(MailMessage.DEFAULT_PORT)))) | |||
| .user(getValue(properties, "user", "")) | |||
| .password(getValue(properties, "password", "")) | |||
| .ssl(Project.toBoolean(getValue(properties, "ssl", "off"))) | |||
| .ssl(Project.toBoolean(getValue(properties, | |||
| "ssl", "off"))) | |||
| .starttls(Project.toBoolean(getValue(properties, | |||
| "starttls.enable", "off"))) | |||
| "starttls.enable", "off"))) | |||
| .from(getValue(properties, "from", null)) | |||
| .replytoList(getValue(properties, "replyto", "")) | |||
| .toList(getValue(properties, prefix + ".to", null)) | |||
| @@ -158,8 +161,9 @@ public class MailLogger extends DefaultLogger { | |||
| .mimeType(getValue(properties, "mimeType", DEFAULT_MIME_TYPE)) | |||
| .charset(getValue(properties, "charset", "")) | |||
| .body(getValue(properties, prefix + ".body", "")) | |||
| .subject(getValue(properties, prefix + ".subject", | |||
| success ? "Build Success" : "Build Failure")); | |||
| .subject(getValue( | |||
| properties, prefix + ".subject", | |||
| (success) ? "Build Success" : "Build Failure")); | |||
| if (values.user().isEmpty() | |||
| && values.password().isEmpty() | |||
| && !values.ssl() && !values.starttls()) { | |||
| @@ -364,7 +364,7 @@ public abstract class AbstractCvsTask extends Task { | |||
| log("Caught exception: " + e.getMessage(), Project.MSG_WARN); | |||
| } catch (BuildException e) { | |||
| if (failOnError) { | |||
| throw e; | |||
| throw(e); | |||
| } | |||
| Throwable t = e.getCause(); | |||
| if (t == null) { | |||
| @@ -266,10 +266,12 @@ public class Available extends Task implements Condition { | |||
| "At least one of (classname|file|resource) is required", | |||
| getLocation()); | |||
| } | |||
| if (type != null && file == null) { | |||
| throw new BuildException( | |||
| if (type != null) { | |||
| if (file == null) { | |||
| throw new BuildException( | |||
| "The type attribute is only valid when specifying the file attribute.", | |||
| getLocation()); | |||
| } | |||
| } | |||
| if (classpath != null) { | |||
| classpath.setProject(getProject()); | |||
| @@ -340,16 +342,19 @@ public class Available extends Task implements Condition { | |||
| // ** full-pathname specified == path in list | |||
| // ** simple name specified == path in list | |||
| if (path.exists() | |||
| && (filename.equals(p) || filename.equals(path.getName()))) { | |||
| && (filename.equals(p) | |||
| || filename.equals(path.getName()))) { | |||
| if (type == null) { | |||
| log("Found: " + path, Project.MSG_VERBOSE); | |||
| return true; | |||
| } | |||
| if (type.isDir() && path.isDirectory()) { | |||
| if (type.isDir() | |||
| && path.isDirectory()) { | |||
| log("Found directory: " + path, Project.MSG_VERBOSE); | |||
| return true; | |||
| } | |||
| if (type.isFile() && path.isFile()) { | |||
| if (type.isFile() | |||
| && path.isFile()) { | |||
| log("Found file: " + path, Project.MSG_VERBOSE); | |||
| return true; | |||
| } | |||
| @@ -358,7 +363,8 @@ public class Available extends Task implements Condition { | |||
| } | |||
| File parent = path.getParentFile(); | |||
| // ** full-pathname specified == parent dir of path in list | |||
| if (parent != null && parent.exists() && filename.equals(parent.getAbsolutePath())) { | |||
| if (parent != null && parent.exists() | |||
| && filename.equals(parent.getAbsolutePath())) { | |||
| if (type == null) { | |||
| log("Found: " + parent, Project.MSG_VERBOSE); | |||
| return true; | |||
| @@ -371,14 +377,17 @@ public class Available extends Task implements Condition { | |||
| return false; | |||
| } | |||
| // ** simple name specified == path in list + name | |||
| if (path.exists() && path.isDirectory() | |||
| && checkFile(new File(path, filename), filename + " in " + path)) { | |||
| return true; | |||
| if (path.exists() && path.isDirectory()) { | |||
| if (checkFile(new File(path, filename), | |||
| filename + " in " + path)) { | |||
| return true; | |||
| } | |||
| } | |||
| // ** simple name specified == parent dir + name | |||
| while (searchParents && parent != null && parent.exists()) { | |||
| if (checkFile(new File(parent, filename), filename + " in " + parent)) { | |||
| if (checkFile(new File(parent, filename), | |||
| filename + " in " + parent)) { | |||
| return true; | |||
| } | |||
| parent = parent.getParentFile(); | |||
| @@ -819,12 +819,12 @@ public class Delete extends MatchingTask { | |||
| boolean isFsLoop = false; | |||
| try { | |||
| isFsLoop = Files.isSymbolicLink(f.toPath()) | |||
| && FileUtils.getFileUtils().isLeadingPath(f.getAbsoluteFile(), | |||
| isFsLoop = Files.isSymbolicLink(f.toPath()) && | |||
| FileUtils.getFileUtils().isLeadingPath(f.getAbsoluteFile(), | |||
| d.getAbsoluteFile(), true); | |||
| } catch (IOException e) { | |||
| log("Failed to check if " + f + " causes a filesystem loop due to " | |||
| + "symbolic link; continuing"); | |||
| log("Failed to check if " + f + " causes a filesystem loop due to " + | |||
| "symbolic link; continuing"); | |||
| } | |||
| if (f.isDirectory() && !isFsLoop) { | |||
| @@ -361,12 +361,13 @@ public class ExecuteOn extends ExecTask { | |||
| Vector<File> baseDirs = new Vector<>(); | |||
| for (AbstractFileSet fs : filesets) { | |||
| String currentType = type; | |||
| if (fs instanceof DirSet && !FileDirBoth.DIR.equals(type)) { | |||
| log("Found a nested dirset but type is " + type + ". " | |||
| + "Temporarily switching to type=\"dir\" on the assumption" | |||
| + " that you really did mean <dirset> not <fileset>.", | |||
| if (fs instanceof DirSet) { | |||
| if (!FileDirBoth.DIR.equals(type)) { | |||
| log("Found a nested dirset but type is " + type + ". " | |||
| + "Temporarily switching to type=\"dir\" on the assumption that you really did mean <dirset> not <fileset>.", | |||
| Project.MSG_DEBUG); | |||
| currentType = FileDirBoth.DIR; | |||
| currentType = FileDirBoth.DIR; | |||
| } | |||
| } | |||
| File base = fs.getDir(getProject()); | |||
| @@ -134,8 +134,8 @@ public class Exit extends Task { | |||
| */ | |||
| @Override | |||
| public void execute() throws BuildException { | |||
| boolean fail = nestedConditionPresent() ? testNestedCondition() | |||
| : testIfCondition() && testUnlessCondition(); | |||
| boolean fail = (nestedConditionPresent()) ? testNestedCondition() | |||
| : (testIfCondition() && testUnlessCondition()); | |||
| if (fail) { | |||
| String text = null; | |||
| if (message != null && !message.trim().isEmpty()) { | |||
| @@ -231,7 +231,7 @@ public class Exit extends Task { | |||
| * @return <code>boolean</code>. | |||
| */ | |||
| private boolean nestedConditionPresent() { | |||
| return nestedCondition != null; | |||
| return (nestedCondition != null); | |||
| } | |||
| } | |||
| @@ -420,9 +420,10 @@ public class FixCRLF extends MatchingTask implements ChainableReader { | |||
| throws BuildException { | |||
| this.srcFile = srcFile; | |||
| try { | |||
| reader = new BufferedReader(encoding == null ? new FileReader(srcFile) | |||
| : new InputStreamReader(Files.newInputStream(srcFile.toPath()), | |||
| encoding), INBUFLEN); | |||
| reader = new BufferedReader( | |||
| ((encoding == null) ? new FileReader(srcFile) | |||
| : new InputStreamReader( | |||
| Files.newInputStream(srcFile.toPath()), encoding)), INBUFLEN); | |||
| nextLine(); | |||
| } catch (IOException e) { | |||
| @@ -53,9 +53,6 @@ public class Java extends Task { | |||
| private static final String TIMEOUT_MESSAGE = | |||
| "Timeout: killed the sub-process"; | |||
| private static final String WRONG_ATTRIBUTES_MESSAGE = | |||
| "Cannot use combination of 'classname', 'jar', 'module', 'sourcefile' attributes in same command"; | |||
| private CommandlineJava cmdl = new CommandlineJava(); | |||
| private Environment env = new Environment(); | |||
| private boolean fork = false; | |||
| @@ -368,7 +365,8 @@ public class Java extends Task { | |||
| public void setJar(File jarfile) throws BuildException { | |||
| if (getCommandLine().getClassname() != null || getCommandLine().getModule() != null | |||
| || getCommandLine().getSourceFile() != null) { | |||
| throw new BuildException(WRONG_ATTRIBUTES_MESSAGE); | |||
| throw new BuildException( | |||
| "Cannot use combination of 'jar', 'sourcefile', 'classname', 'module' attributes in same command"); | |||
| } | |||
| getCommandLine().setJar(jarfile.getAbsolutePath()); | |||
| } | |||
| @@ -383,7 +381,7 @@ public class Java extends Task { | |||
| public void setClassname(String s) throws BuildException { | |||
| if (getCommandLine().getJar() != null || getCommandLine().getSourceFile() != null) { | |||
| throw new BuildException( | |||
| "Cannot use combination of 'classname', 'jar', 'sourcefile' attributes in same command"); | |||
| "Cannot use combination of 'jar', 'classname', sourcefile attributes in same command"); | |||
| } | |||
| getCommandLine().setClassname(s); | |||
| } | |||
| @@ -399,7 +397,7 @@ public class Java extends Task { | |||
| public void setModule(String module) throws BuildException { | |||
| if (getCommandLine().getJar() != null || getCommandLine().getSourceFile() != null) { | |||
| throw new BuildException( | |||
| "Cannot use combination of 'jar', 'module', 'sourcefile' attributes in same command"); | |||
| "Cannot use combination of 'jar', 'module', sourcefile attributes in same command"); | |||
| } | |||
| getCommandLine().setModule(module); | |||
| } | |||
| @@ -414,9 +412,12 @@ public class Java extends Task { | |||
| * @since Ant 1.10.5 | |||
| */ | |||
| public void setSourceFile(final String sourceFile) throws BuildException { | |||
| if (getCommandLine().getClassname() != null || getCommandLine().getJar() != null | |||
| || getCommandLine().getModule() != null) { | |||
| throw new BuildException(WRONG_ATTRIBUTES_MESSAGE); | |||
| final String jar = getCommandLine().getJar(); | |||
| final String className = getCommandLine().getClassname(); | |||
| final String module = getCommandLine().getModule(); | |||
| if (jar != null || className != null || module != null) { | |||
| throw new BuildException("Cannot use 'sourcefile' in combination with 'jar' or " + | |||
| "'module' or 'classname'"); | |||
| } | |||
| getCommandLine().setSourceFile(sourceFile); | |||
| } | |||
| @@ -123,8 +123,10 @@ public class Jikes { | |||
| throw new BuildException("Error running Jikes compiler", e); | |||
| } | |||
| } finally { | |||
| if (tmpFile != null && !tmpFile.delete()) { | |||
| tmpFile.deleteOnExit(); | |||
| if (tmpFile != null) { | |||
| if (!tmpFile.delete()) { | |||
| tmpFile.deleteOnExit(); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -169,9 +169,9 @@ public class JikesOutputParser implements ExecuteStreamHandler { | |||
| private void log(String line) { | |||
| if (!emacsMode) { | |||
| task.log("", error ? Project.MSG_ERR : Project.MSG_WARN); | |||
| task.log("", (error ? Project.MSG_ERR : Project.MSG_WARN)); | |||
| } | |||
| task.log(line, error ? Project.MSG_ERR : Project.MSG_WARN); | |||
| task.log(line, (error ? Project.MSG_ERR : Project.MSG_WARN)); | |||
| } | |||
| /** | |||
| @@ -266,9 +266,9 @@ public class PreSetDef extends AntlibDefinition implements TaskContainer { | |||
| */ | |||
| @Override | |||
| public boolean sameDefinition(AntTypeDefinition other, Project project) { | |||
| return other != null && other.getClass() == getClass() && parent != null | |||
| && parent.sameDefinition(((PreSetDefinition) other).parent, project) | |||
| && element.similar(((PreSetDefinition) other).element); | |||
| return (other != null && other.getClass() == getClass() && parent != null | |||
| && parent.sameDefinition(((PreSetDefinition) other).parent, project) | |||
| && element.similar(((PreSetDefinition) other).element)); | |||
| } | |||
| /** | |||
| @@ -279,11 +279,12 @@ public class PreSetDef extends AntlibDefinition implements TaskContainer { | |||
| * @return true if the definitions are similar. | |||
| */ | |||
| @Override | |||
| public boolean similarDefinition(AntTypeDefinition other, Project project) { | |||
| return other != null && other.getClass().getName().equals(getClass().getName()) | |||
| && parent != null | |||
| && parent.similarDefinition(((PreSetDefinition) other).parent, project) | |||
| && element.similar(((PreSetDefinition) other).element); | |||
| public boolean similarDefinition( | |||
| AntTypeDefinition other, Project project) { | |||
| return (other != null && other.getClass().getName().equals( | |||
| getClass().getName()) && parent != null | |||
| && parent.similarDefinition(((PreSetDefinition) other).parent, project) | |||
| && element.similar(((PreSetDefinition) other).element)); | |||
| } | |||
| } | |||
| } | |||
| @@ -114,7 +114,7 @@ public class Recorder extends Task implements SubBuildListener { | |||
| * @param append if true, append to a previous file. | |||
| */ | |||
| public void setAppend(boolean append) { | |||
| this.append = append ? Boolean.TRUE : Boolean.FALSE; | |||
| this.append = (append ? Boolean.TRUE : Boolean.FALSE); | |||
| } | |||
| @@ -695,7 +695,8 @@ public class Redirector { | |||
| /** outStreams */ | |||
| private void outStreams() { | |||
| if (out != null && out.length > 0) { | |||
| final String logHead = "Output " + (appendOut ? "appended" : "redirected") + " to "; | |||
| final String logHead = "Output " | |||
| + ((appendOut) ? "appended" : "redirected") + " to "; | |||
| outputStream = foldFiles(out, logHead, Project.MSG_VERBOSE, | |||
| appendOut, createEmptyFilesOut); | |||
| } | |||
| @@ -716,7 +717,8 @@ public class Redirector { | |||
| private void errorStreams() { | |||
| if (error != null && error.length > 0) { | |||
| final String logHead = "Error " + (appendErr ? "appended" : "redirected") + " to "; | |||
| final String logHead = "Error " | |||
| + ((appendErr) ? "appended" : "redirected") + " to "; | |||
| errorStream = foldFiles(error, logHead, Project.MSG_VERBOSE, | |||
| appendErr, createEmptyFilesErr); | |||
| } else if (!(logError || outputStream == null) && errorProperty == null) { | |||
| @@ -619,14 +619,17 @@ public class SQLExec extends JDBCTask { | |||
| sqlCommand = sqlCommand.trim(); | |||
| try { | |||
| if (srcFile == null && sqlCommand.isEmpty() && resources == null && transactions.isEmpty()) { | |||
| throw new BuildException( | |||
| if (srcFile == null && sqlCommand.isEmpty() && resources == null) { | |||
| if (transactions.isEmpty()) { | |||
| throw new BuildException( | |||
| "Source file or resource collection, transactions or sql statement must be set!", | |||
| getLocation()); | |||
| } | |||
| } | |||
| if (srcFile != null && !srcFile.isFile()) { | |||
| throw new BuildException("Source file " + srcFile + " is not a file!", getLocation()); | |||
| throw new BuildException("Source file " + srcFile | |||
| + " is not a file!", getLocation()); | |||
| } | |||
| if (resources != null) { | |||
| @@ -70,7 +70,7 @@ public class TaskOutputStream extends OutputStream { | |||
| * @param c the character to write | |||
| * @throws IOException on error | |||
| */ | |||
| @Override | |||
| public void write(int c) throws IOException { | |||
| char cc = (char) c; | |||
| if (cc == '\r' || cc == '\n') { | |||
| @@ -254,7 +254,7 @@ public class Touch extends Task { | |||
| } | |||
| } | |||
| log("Setting millis to " + workmillis + " from datetime attribute", | |||
| millis < 0 ? Project.MSG_DEBUG : Project.MSG_VERBOSE); | |||
| ((millis < 0) ? Project.MSG_DEBUG : Project.MSG_VERBOSE)); | |||
| setMillis(workmillis); | |||
| // only set if successful to this point: | |||
| dateTimeConfigured = true; | |||
| @@ -352,7 +352,7 @@ public class Touch extends Task { | |||
| private void touch(File file, long modTime) { | |||
| if (!file.exists()) { | |||
| log("Creating " + file, | |||
| verbose ? Project.MSG_INFO : Project.MSG_VERBOSE); | |||
| ((verbose) ? Project.MSG_INFO : Project.MSG_VERBOSE)); | |||
| try { | |||
| FILE_UTILS.createNewFile(file, mkdirs); | |||
| } catch (IOException ioe) { | |||
| @@ -761,9 +761,11 @@ public class Zip extends MatchingTask { | |||
| // If we've been successful on an update, delete the | |||
| // temporary file | |||
| if (doUpdate && !renamedFile.delete()) { | |||
| log("Warning: unable to delete temporary file " | |||
| if (doUpdate) { | |||
| if (!renamedFile.delete()) { | |||
| log("Warning: unable to delete temporary file " | |||
| + renamedFile.getName(), Project.MSG_WARN); | |||
| } | |||
| } | |||
| success = true; | |||
| } finally { | |||
| @@ -264,12 +264,12 @@ public class Os implements Condition { | |||
| boolean isNT = false; | |||
| if (isWindows) { | |||
| //there are only four 9x platforms that we look for | |||
| //wince isn't really 9x, but crippled enough to | |||
| //be a muchness. Ant doesn't run on CE, anyway. | |||
| is9x = OS_NAME.contains("95") | |||
| is9x = (OS_NAME.contains("95") | |||
| || OS_NAME.contains("98") | |||
| || OS_NAME.contains("me") | |||
| || OS_NAME.contains("ce"); | |||
| //wince isn't really 9x, but crippled enough to | |||
| //be a muchness. Ant doesn't run on CE, anyway. | |||
| || OS_NAME.contains("ce")); | |||
| isNT = !is9x; | |||
| } | |||
| switch (family) { | |||
| @@ -51,11 +51,12 @@ public class EmailAddress { | |||
| int len = email.length(); | |||
| // shortcut for "<address>" | |||
| if (len > minLen | |||
| && (email.charAt(0) == '<' || email.charAt(1) == '<') | |||
| && (email.charAt(len - 1) == '>' || email.charAt(len - 2) == '>')) { | |||
| this.address = trim(email, true); | |||
| return; | |||
| if (len > minLen) { | |||
| if ((email.charAt(0) == '<' || email.charAt(1) == '<') | |||
| && (email.charAt(len - 1) == '>' || email.charAt(len - 2) == '>')) { | |||
| this.address = trim(email, true); | |||
| return; | |||
| } | |||
| } | |||
| int paramDepth = 0; | |||
| @@ -111,7 +111,8 @@ public class MimeMailer extends Mailer { | |||
| return type; | |||
| } | |||
| // Must be like "text/plain; charset=windows-1251" | |||
| return (type != null ? type : "text/plain") + "; charset=" + charset; | |||
| return (type != null ? type : "text/plain") + | |||
| "; charset=" + charset; | |||
| } | |||
| @Override | |||
| @@ -479,7 +479,7 @@ public class SchemaValidate extends XMLValidateTask { | |||
| public int hashCode() { | |||
| int result; | |||
| // CheckStyle:MagicNumber OFF | |||
| result = namespace == null ? 0 : namespace.hashCode(); | |||
| result = (namespace == null ? 0 : namespace.hashCode()); | |||
| result = 29 * result + (file == null ? 0 : file.hashCode()); | |||
| result = 29 * result + (url == null ? 0 : url.hashCode()); | |||
| // CheckStyle:MagicNumber OFF | |||
| @@ -531,7 +531,6 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware | |||
| * Log an error. | |||
| * @param e the exception to log. | |||
| */ | |||
| @Override | |||
| public void error(final TransformerException e) { | |||
| logError(e, "Error"); | |||
| } | |||
| @@ -540,7 +539,6 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware | |||
| * Log a fatal error. | |||
| * @param e the exception to log. | |||
| */ | |||
| @Override | |||
| public void fatalError(final TransformerException e) { | |||
| logError(e, "Fatal Error"); | |||
| throw new BuildException("Fatal error during transformation using " + stylesheet + ": " + e.getMessageAndLocation(), e); | |||
| @@ -550,7 +548,6 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware | |||
| * Log a warning. | |||
| * @param e the exception to log. | |||
| */ | |||
| @Override | |||
| public void warning(final TransformerException e) { | |||
| if (!suppressWarnings) { | |||
| logError(e, "Warning"); | |||
| @@ -364,7 +364,7 @@ public class XMLValidateTask extends Task { | |||
| * @return true when a SAX1 parser is in use | |||
| */ | |||
| protected boolean isSax1Parser() { | |||
| return xmlReader instanceof ParserAdapter; | |||
| return (xmlReader instanceof ParserAdapter); | |||
| } | |||
| /** | |||
| @@ -599,7 +599,6 @@ public class XMLValidateTask extends Task { | |||
| * record a fatal error | |||
| * @param exception the fatal error | |||
| */ | |||
| @Override | |||
| public void fatalError(SAXParseException exception) { | |||
| failed = true; | |||
| doLog(exception, Project.MSG_ERR); | |||
| @@ -608,7 +607,6 @@ public class XMLValidateTask extends Task { | |||
| * receive notification of a recoverable error | |||
| * @param exception the error | |||
| */ | |||
| @Override | |||
| public void error(SAXParseException exception) { | |||
| failed = true; | |||
| doLog(exception, Project.MSG_ERR); | |||
| @@ -617,7 +615,6 @@ public class XMLValidateTask extends Task { | |||
| * receive notification of a warning | |||
| * @param exception the warning | |||
| */ | |||
| @Override | |||
| public void warning(SAXParseException exception) { | |||
| // depending on implementation, XMLReader can yield hips of warning, | |||
| // only output then if user explicitly asked for it | |||
| @@ -627,6 +624,7 @@ public class XMLValidateTask extends Task { | |||
| } | |||
| private void doLog(SAXParseException e, int logLevel) { | |||
| log(getMessage(e), logLevel); | |||
| } | |||
| @@ -745,4 +743,6 @@ public class XMLValidateTask extends Task { | |||
| } // Property | |||
| } | |||
| @@ -305,12 +305,15 @@ public class Depend extends MatchingTask { | |||
| List<String> dependencyList = null; | |||
| // try to read the dependency info from the map if it is not out of date | |||
| if (cache != null && cacheFileExists | |||
| if (cache != null) { | |||
| // try to read the dependency info from the map if it is | |||
| // not out of date | |||
| if (cacheFileExists | |||
| && cacheLastModified > info.absoluteFile.lastModified()) { | |||
| // depFile exists and is newer than the class file | |||
| // need to get dependency list from the map. | |||
| dependencyList = dependencyMap.get(info.className); | |||
| // depFile exists and is newer than the class file | |||
| // need to get dependency list from the map. | |||
| dependencyList = dependencyMap.get(info.className); | |||
| } | |||
| } | |||
| if (dependencyList == null) { | |||
| @@ -509,16 +512,20 @@ public class Depend extends MatchingTask { | |||
| * @param affectedClass the name of the affected .class file | |||
| * @param className the file that is triggering the out of dateness | |||
| */ | |||
| private void warnOutOfDateButNotDeleted(ClassFileInfo affectedClassInfo, String affectedClass, | |||
| private void warnOutOfDateButNotDeleted( | |||
| ClassFileInfo affectedClassInfo, String affectedClass, | |||
| String className) { | |||
| if (affectedClassInfo.isUserWarned) { | |||
| return; | |||
| } | |||
| int level = Project.MSG_WARN; | |||
| // downgrade warnings on RMI stublike classes, as they are generated by rmic, | |||
| // so there is no need to tell the user that their source is missing. | |||
| if (!warnOnRmiStubs && isRmiStub(affectedClass, className)) { | |||
| level = Project.MSG_VERBOSE; | |||
| if (!warnOnRmiStubs) { | |||
| //downgrade warnings on RMI stublike classes, as they are generated | |||
| //by rmic, so there is no need to tell the user that their source is | |||
| //missing. | |||
| if (isRmiStub(affectedClass, className)) { | |||
| level = Project.MSG_VERBOSE; | |||
| } | |||
| } | |||
| log("The class " + affectedClass + " in file " | |||
| + affectedClassInfo.absoluteFile.getPath() | |||
| @@ -157,10 +157,12 @@ public class DescriptorHandler extends HandlerBase { | |||
| return; | |||
| } | |||
| if (getClass().getResource(location) != null && publicId != null) { | |||
| resourceDTDs.put(publicId, location); | |||
| owningTask.log("Mapped publicId " + publicId + " to resource " | |||
| if (getClass().getResource(location) != null) { | |||
| if (publicId != null) { | |||
| resourceDTDs.put(publicId, location); | |||
| owningTask.log("Mapped publicId " + publicId + " to resource " | |||
| + location, Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| try { | |||
| @@ -381,8 +383,10 @@ public class DescriptorHandler extends HandlerBase { | |||
| } | |||
| // Get the value of the <ejb-name> tag. Only the first occurrence. | |||
| if (currentElement.equals(EJB_NAME) && ejbName == null) { | |||
| ejbName = currentText.trim(); | |||
| if (currentElement.equals(EJB_NAME)) { | |||
| if (ejbName == null) { | |||
| ejbName = currentText.trim(); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1081,7 +1081,12 @@ public class IPlanetEjbc { | |||
| * be run to bring the stubs and skeletons up to date. | |||
| */ | |||
| public boolean mustBeRecompiled(File destDir) { | |||
| return destClassesModified(destDir) < sourceClassesModified(destDir); | |||
| long sourceModified = sourceClassesModified(destDir); | |||
| long destModified = destClassesModified(destDir); | |||
| return (destModified < sourceModified); | |||
| } | |||
| /** | |||
| @@ -1231,7 +1236,8 @@ public class IPlanetEjbc { | |||
| * names for the stubs and skeletons to be generated. | |||
| */ | |||
| private String[] classesToGenerate() { | |||
| String[] classnames = iiop ? new String[NUM_CLASSES_WITH_IIOP] | |||
| String[] classnames = (iiop) | |||
| ? new String[NUM_CLASSES_WITH_IIOP] | |||
| : new String[NUM_CLASSES_WITHOUT_IIOP]; | |||
| final String remotePkg = remote.getPackageName() + "."; | |||
| @@ -468,27 +468,29 @@ public class JonasDeploymentTool extends GenericDeploymentTool { | |||
| String baseName = null; | |||
| // try to find JOnAS specific convention name | |||
| if (getConfig().namingScheme.getValue().equals(EjbJar.NamingScheme.DESCRIPTOR) | |||
| && !descriptorFileName.contains(getConfig().baseNameTerminator)) { | |||
| if (getConfig().namingScheme.getValue().equals(EjbJar.NamingScheme.DESCRIPTOR)) { | |||
| // baseNameTerminator not found: the descriptor use the | |||
| // JOnAS naming convention, ie [Foo.xml,jonas-Foo.xml] and | |||
| // not [Foo<baseNameTerminator>-ejb-jar.xml, | |||
| // Foo<baseNameTerminator>-jonas-ejb-jar.xml]. | |||
| // try to find JOnAS specific convention name | |||
| if (!descriptorFileName.contains(getConfig().baseNameTerminator)) { | |||
| String aCanonicalDescriptor = descriptorFileName.replace('\\', '/'); | |||
| int lastSeparatorIndex = aCanonicalDescriptor.lastIndexOf('/'); | |||
| int endOfBaseName; | |||
| // baseNameTerminator not found: the descriptor use the | |||
| // JOnAS naming convention, ie [Foo.xml,jonas-Foo.xml] and | |||
| // not [Foo<baseNameTerminator>-ejb-jar.xml, | |||
| // Foo<baseNameTerminator>-jonas-ejb-jar.xml]. | |||
| if (lastSeparatorIndex != -1) { | |||
| endOfBaseName = descriptorFileName.indexOf(".xml", lastSeparatorIndex); | |||
| } else { | |||
| endOfBaseName = descriptorFileName.indexOf(".xml"); | |||
| } | |||
| String aCanonicalDescriptor = descriptorFileName.replace('\\', '/'); | |||
| int lastSeparatorIndex = aCanonicalDescriptor.lastIndexOf('/'); | |||
| int endOfBaseName; | |||
| if (endOfBaseName != -1) { | |||
| baseName = descriptorFileName.substring(0, endOfBaseName); | |||
| if (lastSeparatorIndex != -1) { | |||
| endOfBaseName = descriptorFileName.indexOf(".xml", lastSeparatorIndex); | |||
| } else { | |||
| endOfBaseName = descriptorFileName.indexOf(".xml"); | |||
| } | |||
| if (endOfBaseName != -1) { | |||
| baseName = descriptorFileName.substring(0, endOfBaseName); | |||
| } | |||
| } | |||
| } | |||
| @@ -190,11 +190,12 @@ public final class Extension { | |||
| if (null == manifest) { | |||
| return new Extension[0]; | |||
| } | |||
| return Stream.concat(Optional.ofNullable(manifest.getMainAttributes()) | |||
| .map(Stream::of).orElse(Stream.empty()), | |||
| return Stream | |||
| .concat(Optional.ofNullable(manifest.getMainAttributes()) | |||
| .map(Stream::of).orElse(Stream.empty()), | |||
| manifest.getEntries().values().stream()) | |||
| .map(attrs -> getExtension("", attrs)).filter(Objects::nonNull) | |||
| .toArray(Extension[]::new); | |||
| .map(attrs -> getExtension("", attrs)).filter(Objects::nonNull) | |||
| .toArray(Extension[]::new); | |||
| } | |||
| /** | |||
| @@ -254,13 +255,15 @@ public final class Extension { | |||
| specificationVendor); | |||
| } | |||
| final DeweyDecimal specificationVersion = extension.getSpecificationVersion(); | |||
| final DeweyDecimal specificationVersion | |||
| = extension.getSpecificationVersion(); | |||
| if (null != specificationVersion) { | |||
| attributes.putValue(prefix + SPECIFICATION_VERSION, | |||
| specificationVersion.toString()); | |||
| } | |||
| final String implementationVendorID = extension.getImplementationVendorID(); | |||
| final String implementationVendorID | |||
| = extension.getImplementationVendorID(); | |||
| if (null != implementationVendorID) { | |||
| attributes.putValue(prefix + IMPLEMENTATION_VENDOR_ID, | |||
| implementationVendorID); | |||
| @@ -272,7 +275,8 @@ public final class Extension { | |||
| implementationVendor); | |||
| } | |||
| final DeweyDecimal implementationVersion = extension.getImplementationVersion(); | |||
| final DeweyDecimal implementationVersion | |||
| = extension.getImplementationVersion(); | |||
| if (null != implementationVersion) { | |||
| attributes.putValue(prefix + IMPLEMENTATION_VERSION, | |||
| implementationVersion.toString()); | |||
| @@ -310,7 +314,8 @@ public final class Extension { | |||
| if (null != specificationVersion) { | |||
| try { | |||
| this.specificationVersion = new DeweyDecimal(specificationVersion); | |||
| this.specificationVersion | |||
| = new DeweyDecimal(specificationVersion); | |||
| } catch (final NumberFormatException nfe) { | |||
| final String error = "Bad specification version format '" | |||
| + specificationVersion + "' in '" + extensionName | |||
| @@ -418,24 +423,33 @@ public final class Extension { | |||
| } | |||
| // Available specification version must be >= required | |||
| final DeweyDecimal requiredSpecificationVersion = required.getSpecificationVersion(); | |||
| if (null != requiredSpecificationVersion && (null == specificationVersion | |||
| || !isCompatible(specificationVersion, requiredSpecificationVersion))) { | |||
| return REQUIRE_SPECIFICATION_UPGRADE; | |||
| final DeweyDecimal requiredSpecificationVersion | |||
| = required.getSpecificationVersion(); | |||
| if (null != requiredSpecificationVersion) { | |||
| if (null == specificationVersion | |||
| || !isCompatible(specificationVersion, requiredSpecificationVersion)) { | |||
| return REQUIRE_SPECIFICATION_UPGRADE; | |||
| } | |||
| } | |||
| // Implementation Vendor ID must match | |||
| final String requiredImplementationVendorID = required.getImplementationVendorID(); | |||
| if (null != requiredImplementationVendorID && (null == implementationVendorID | |||
| || !implementationVendorID.equals(requiredImplementationVendorID))) { | |||
| return REQUIRE_VENDOR_SWITCH; | |||
| final String requiredImplementationVendorID | |||
| = required.getImplementationVendorID(); | |||
| if (null != requiredImplementationVendorID) { | |||
| if (null == implementationVendorID | |||
| || !implementationVendorID.equals(requiredImplementationVendorID)) { | |||
| return REQUIRE_VENDOR_SWITCH; | |||
| } | |||
| } | |||
| // Implementation version must be >= required | |||
| final DeweyDecimal requiredImplementationVersion = required.getImplementationVersion(); | |||
| if (null != requiredImplementationVersion && (null == implementationVersion | |||
| || !isCompatible(implementationVersion, requiredImplementationVersion))) { | |||
| return REQUIRE_IMPLEMENTATION_UPGRADE; | |||
| final DeweyDecimal requiredImplementationVersion | |||
| = required.getImplementationVersion(); | |||
| if (null != requiredImplementationVersion) { | |||
| if (null == implementationVersion | |||
| || !isCompatible(implementationVersion, requiredImplementationVersion)) { | |||
| return REQUIRE_IMPLEMENTATION_UPGRADE; | |||
| } | |||
| } | |||
| // This available optional package satisfies the requirements | |||
| @@ -453,7 +467,7 @@ public final class Extension { | |||
| * @return true if the specified extension is compatible with this extension | |||
| */ | |||
| public boolean isCompatibleWith(final Extension required) { | |||
| return COMPATIBLE == getCompatibilityWith(required); | |||
| return (COMPATIBLE == getCompatibilityWith(required)); | |||
| } | |||
| /** | |||
| @@ -502,7 +516,8 @@ public final class Extension { | |||
| * @param first First version number (dotted decimal) | |||
| * @param second Second version number (dotted decimal) | |||
| */ | |||
| private boolean isCompatible(final DeweyDecimal first, final DeweyDecimal second) { | |||
| private boolean isCompatible(final DeweyDecimal first, | |||
| final DeweyDecimal second) { | |||
| return first.isGreaterThanOrEqual(second); | |||
| } | |||
| @@ -515,7 +530,8 @@ public final class Extension { | |||
| * EXTENSION_LIST or OPTIONAL_EXTENSION_LIST) | |||
| * @return the list of listed extensions | |||
| */ | |||
| private static Extension[] getListed(final Manifest manifest, final Attributes.Name listKey) { | |||
| private static Extension[] getListed(final Manifest manifest, | |||
| final Attributes.Name listKey) { | |||
| final List<Extension> results = new ArrayList<>(); | |||
| final Attributes mainAttributes = manifest.getMainAttributes(); | |||
| @@ -560,7 +576,8 @@ public final class Extension { | |||
| * @param onToken the token | |||
| * @return the resultant array | |||
| */ | |||
| private static String[] split(final String string, final String onToken) { | |||
| private static String[] split(final String string, | |||
| final String onToken) { | |||
| final StringTokenizer tokenizer = new StringTokenizer(string, onToken); | |||
| final String[] result = new String[tokenizer.countTokens()]; | |||
| @@ -583,7 +600,8 @@ public final class Extension { | |||
| * @param attributes Attributes to searched | |||
| * @return the new Extension object, or null | |||
| */ | |||
| private static Extension getExtension(final String prefix, final Attributes attributes) { | |||
| private static Extension getExtension(final String prefix, | |||
| final Attributes attributes) { | |||
| //WARNING: We trim the values of all the attributes because | |||
| //Some extension declarations are badly defined (ie have spaces | |||
| //after version or vendorID) | |||
| @@ -83,15 +83,15 @@ public class JavahAdapterFactory { | |||
| Path classpath) | |||
| throws BuildException { | |||
| if ((JavaEnvUtils.isKaffe() && choice == null) | |||
| || Kaffeh.IMPLEMENTATION_NAME.equals(choice)) { | |||
| || Kaffeh.IMPLEMENTATION_NAME.equals(choice)) { | |||
| return new Kaffeh(); | |||
| } | |||
| if ((JavaEnvUtils.isGij() && choice == null) | |||
| || Gcjh.IMPLEMENTATION_NAME.equals(choice)) { | |||
| || Gcjh.IMPLEMENTATION_NAME.equals(choice)) { | |||
| return new Gcjh(); | |||
| } | |||
| if (JavaEnvUtils.isAtLeastJavaVersion("10") | |||
| && (choice == null || ForkingJavah.IMPLEMENTATION_NAME.equals(choice))) { | |||
| if (JavaEnvUtils.isAtLeastJavaVersion("10") && | |||
| (choice == null || ForkingJavah.IMPLEMENTATION_NAME.equals(choice))) { | |||
| throw new BuildException("javah does not exist under Java 10 and higher," | |||
| + " use the javac task with nativeHeaderDir instead"); | |||
| } | |||
| @@ -1687,12 +1687,13 @@ public class JUnitTask extends Task { | |||
| * @since 1.9.8 | |||
| */ | |||
| private void checkModules() { | |||
| if ((hasPath(getCommandline().getModulepath()) | |||
| || hasPath(getCommandline().getUpgrademodulepath())) | |||
| && (!batchTests.stream().allMatch(BaseTest::getFork) | |||
| || !tests.stream().allMatch(BaseTest::getFork))) { | |||
| throw new BuildException( | |||
| if (hasPath(getCommandline().getModulepath()) | |||
| || hasPath(getCommandline().getUpgrademodulepath())) { | |||
| if (!batchTests.stream().allMatch(BaseTest::getFork) | |||
| || !tests.stream().allMatch(BaseTest::getFork)) { | |||
| throw new BuildException( | |||
| "The module path requires fork attribute to be set to true."); | |||
| } | |||
| } | |||
| } | |||
| @@ -1942,35 +1943,37 @@ public class JUnitTask extends Task { | |||
| private void createClassLoader() { | |||
| final Path userClasspath = getCommandline().getClasspath(); | |||
| final Path userModulepath = getCommandline().getModulepath(); | |||
| if ((userClasspath != null || userModulepath != null) && (reloading || classLoader == null)) { | |||
| deleteClassLoader(); | |||
| final Path path = new Path(getProject()); | |||
| if (userClasspath != null) { | |||
| path.add((Path) userClasspath.clone()); | |||
| } | |||
| if (userModulepath != null && !hasJunit(path)) { | |||
| path.add(expandModulePath(userModulepath)); | |||
| } | |||
| if (includeAntRuntime) { | |||
| log("Implicitly adding " + antRuntimeClasses | |||
| if (userClasspath != null || userModulepath != null) { | |||
| if (reloading || classLoader == null) { | |||
| deleteClassLoader(); | |||
| final Path path = new Path(getProject()); | |||
| if (userClasspath != null) { | |||
| path.add((Path) userClasspath.clone()); | |||
| } | |||
| if (userModulepath != null && !hasJunit(path)) { | |||
| path.add(expandModulePath(userModulepath)); | |||
| } | |||
| if (includeAntRuntime) { | |||
| log("Implicitly adding " + antRuntimeClasses | |||
| + " to CLASSPATH", Project.MSG_VERBOSE); | |||
| path.append(antRuntimeClasses); | |||
| } | |||
| classLoader = getProject().createClassLoader(path); | |||
| if (getClass().getClassLoader() != null | |||
| path.append(antRuntimeClasses); | |||
| } | |||
| classLoader = getProject().createClassLoader(path); | |||
| if (getClass().getClassLoader() != null | |||
| && getClass().getClassLoader() != Project.class.getClassLoader()) { | |||
| classLoader.setParent(getClass().getClassLoader()); | |||
| } | |||
| classLoader.setParentFirst(false); | |||
| classLoader.addJavaLibraries(); | |||
| log("Using CLASSPATH " + classLoader.getClasspath(), | |||
| classLoader.setParent(getClass().getClassLoader()); | |||
| } | |||
| classLoader.setParentFirst(false); | |||
| classLoader.addJavaLibraries(); | |||
| log("Using CLASSPATH " + classLoader.getClasspath(), | |||
| Project.MSG_VERBOSE); | |||
| // make sure the test will be accepted as a TestCase | |||
| classLoader.addSystemPackageRoot("junit"); | |||
| // make sure the test annotation are accepted | |||
| classLoader.addSystemPackageRoot("org.junit"); | |||
| // will cause trouble in JDK 1.1 if omitted | |||
| classLoader.addSystemPackageRoot("org.apache.tools.ant"); | |||
| // make sure the test will be accepted as a TestCase | |||
| classLoader.addSystemPackageRoot("junit"); | |||
| // make sure the test annotation are accepted | |||
| classLoader.addSystemPackageRoot("org.junit"); | |||
| // will cause trouble in JDK 1.1 if omitted | |||
| classLoader.addSystemPackageRoot("org.apache.tools.ant"); | |||
| } | |||
| } | |||
| } | |||
| @@ -2064,7 +2067,8 @@ public class JUnitTask extends Task { | |||
| */ | |||
| @Override | |||
| public boolean equals(final Object other) { | |||
| if (other == null || other.getClass() != ForkedTestConfiguration.class) { | |||
| if (other == null | |||
| || other.getClass() != ForkedTestConfiguration.class) { | |||
| return false; | |||
| } | |||
| final ForkedTestConfiguration o = (ForkedTestConfiguration) other; | |||
| @@ -2072,9 +2076,13 @@ public class JUnitTask extends Task { | |||
| && haltOnError == o.haltOnError | |||
| && haltOnFailure == o.haltOnFailure | |||
| && ((errorProperty == null && o.errorProperty == null) | |||
| || (errorProperty != null && errorProperty.equals(o.errorProperty))) | |||
| || | |||
| (errorProperty != null | |||
| && errorProperty.equals(o.errorProperty))) | |||
| && ((failureProperty == null && o.failureProperty == null) | |||
| || (failureProperty != null && failureProperty.equals(o.failureProperty))); | |||
| || | |||
| (failureProperty != null | |||
| && failureProperty.equals(o.failureProperty))); | |||
| } | |||
| /** | |||
| @@ -206,8 +206,8 @@ public class LauncherSupport { | |||
| final Optional<Project> project = this.testExecutionContext.getProject(); | |||
| for (final ListenerDefinition applicableListener : applicableListenerElements) { | |||
| if (project.isPresent() && !applicableListener.shouldUse(project.get())) { | |||
| log("Excluding listener " + applicableListener.getClassName() + " since it's not applicable" | |||
| + " in the context of project", null, Project.MSG_DEBUG); | |||
| log("Excluding listener " + applicableListener.getClassName() + " since it's not applicable" + | |||
| " in the context of project", null, Project.MSG_DEBUG); | |||
| continue; | |||
| } | |||
| final TestExecutionListener listener = requireTestExecutionListener(applicableListener, classLoader); | |||
| @@ -274,8 +274,7 @@ public class LauncherSupport { | |||
| throw new BuildException("Failed to load listener class " + className, e); | |||
| } | |||
| if (!TestExecutionListener.class.isAssignableFrom(klass)) { | |||
| throw new BuildException("Listener class " + className + " is not of type " | |||
| + TestExecutionListener.class.getName()); | |||
| throw new BuildException("Listener class " + className + " is not of type " + TestExecutionListener.class.getName()); | |||
| } | |||
| try { | |||
| return (TestExecutionListener) klass.newInstance(); | |||
| @@ -309,8 +308,7 @@ public class LauncherSupport { | |||
| // if the test is configured to halt on test failures, throw a build error | |||
| final String errorMessage; | |||
| if (test instanceof NamedTest) { | |||
| errorMessage = "Test " + ((NamedTest) test).getName() + " has " | |||
| + summary.getTestsFailedCount() + " failure(s)"; | |||
| errorMessage = "Test " + ((NamedTest) test).getName() + " has " + summary.getTestsFailedCount() + " failure(s)"; | |||
| } else { | |||
| errorMessage = "Some test(s) have failure(s)"; | |||
| } | |||
| @@ -368,8 +366,7 @@ public class LauncherSupport { | |||
| final Thread sysErrStreamer = new Thread(streamer); | |||
| sysErrStreamer.setDaemon(true); | |||
| sysErrStreamer.setName("junitlauncher-syserr-stream-reader"); | |||
| sysErrStreamer.setUncaughtExceptionHandler((t, e) -> this.log("Failed in syserr streaming", | |||
| e, Project.MSG_INFO)); | |||
| sysErrStreamer.setUncaughtExceptionHandler((t, e) -> this.log("Failed in syserr streaming", e, Project.MSG_INFO)); | |||
| sysErrStreamer.start(); | |||
| break; | |||
| } | |||
| @@ -82,7 +82,6 @@ final class TestRequest implements AutoCloseable { | |||
| return Collections.unmodifiableList(this.interestedInSysErr); | |||
| } | |||
| @Override | |||
| public void close() throws Exception { | |||
| if (this.closables.isEmpty()) { | |||
| return; | |||
| @@ -87,8 +87,8 @@ public class JUnitLauncherTask extends Task { | |||
| final Project project = getProject(); | |||
| for (final TestDefinition test : this.tests) { | |||
| if (!test.shouldRun(project)) { | |||
| log("Excluding test " + test + " since it's considered not to run " | |||
| + "in context of project " + project, Project.MSG_DEBUG); | |||
| log("Excluding test " + test + " since it's considered not to run " + | |||
| "in context of project " + project, Project.MSG_DEBUG); | |||
| continue; | |||
| } | |||
| if (test.getForkDefinition() != null) { | |||
| @@ -214,8 +214,8 @@ public class JUnitLauncherTask extends Task { | |||
| try { | |||
| projectPropsPath = dumpProjectProperties(); | |||
| } catch (IOException e) { | |||
| throw new BuildException("Could not create the necessary properties file while forking" | |||
| + " a process for a test", e); | |||
| throw new BuildException("Could not create the necessary properties file while forking a process" + | |||
| " for a test", e); | |||
| } | |||
| // --properties <path-to-properties-file> | |||
| commandlineJava.createArgument().setValue(Constants.ARG_PROPERTIES); | |||
| @@ -710,25 +710,26 @@ public class FTP extends Task implements FTPTaskConfig { | |||
| boolean candidateFound = false; | |||
| String target = null; | |||
| for (int icounter = 0; icounter < array.length; icounter++) { | |||
| if (array[icounter] != null && array[icounter].isDirectory() | |||
| && !".".equals(array[icounter].getName()) | |||
| if (array[icounter] != null && array[icounter].isDirectory()) { | |||
| if (!".".equals(array[icounter].getName()) | |||
| && !"..".equals(array[icounter].getName())) { | |||
| candidateFound = true; | |||
| target = fiddleName(array[icounter].getName()); | |||
| getProject().log("will try to cd to " | |||
| + target + " where a directory called " + array[icounter].getName() | |||
| + " exists", Project.MSG_DEBUG); | |||
| for (int pcounter = 0; pcounter < array.length; pcounter++) { | |||
| if (array[pcounter] != null | |||
| candidateFound = true; | |||
| target = fiddleName(array[icounter].getName()); | |||
| getProject().log("will try to cd to " | |||
| + target + " where a directory called " + array[icounter].getName() | |||
| + " exists", Project.MSG_DEBUG); | |||
| for (int pcounter = 0; pcounter < array.length; pcounter++) { | |||
| if (array[pcounter] != null | |||
| && pcounter != icounter | |||
| && target.equals(array[pcounter].getName())) { | |||
| candidateFound = false; | |||
| candidateFound = false; | |||
| break; | |||
| } | |||
| } | |||
| if (candidateFound) { | |||
| break; | |||
| } | |||
| } | |||
| if (candidateFound) { | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| if (candidateFound) { | |||
| @@ -875,7 +876,7 @@ public class FTP extends Task implements FTPTaskConfig { | |||
| * @return true if the file exists | |||
| */ | |||
| public boolean exists() { | |||
| return ftpFile != null; | |||
| return (ftpFile != null); | |||
| } | |||
| /** | |||
| @@ -72,8 +72,8 @@ class FTPConfigurator { | |||
| if (!serverLanguageCodeConfig.isEmpty() | |||
| && !FTPClientConfig.getSupportedLanguageCodes() | |||
| .contains(serverLanguageCodeConfig)) { | |||
| throw new BuildException("unsupported language code" | |||
| + serverLanguageCodeConfig); | |||
| throw new BuildException("unsupported language code" + | |||
| serverLanguageCodeConfig); | |||
| } | |||
| config.setServerLanguageCode(serverLanguageCodeConfig); | |||
| task.log("custom config: server language code = " | |||
| @@ -611,25 +611,26 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { | |||
| boolean candidateFound = false; | |||
| String target = null; | |||
| for (int icounter = 0; icounter < array.length; icounter++) { | |||
| if (array[icounter] != null && array[icounter].isDirectory() | |||
| && !".".equals(array[icounter].getName()) | |||
| if (array[icounter] != null && array[icounter].isDirectory()) { | |||
| if (!".".equals(array[icounter].getName()) | |||
| && !"..".equals(array[icounter].getName())) { | |||
| candidateFound = true; | |||
| target = fiddleName(array[icounter].getName()); | |||
| task.log("will try to cd to " | |||
| + target + " where a directory called " + array[icounter].getName() | |||
| + " exists", Project.MSG_DEBUG); | |||
| for (int pcounter = 0; pcounter < array.length; pcounter++) { | |||
| if (array[pcounter] != null | |||
| candidateFound = true; | |||
| target = fiddleName(array[icounter].getName()); | |||
| task.log("will try to cd to " | |||
| + target + " where a directory called " + array[icounter].getName() | |||
| + " exists", Project.MSG_DEBUG); | |||
| for (int pcounter = 0; pcounter < array.length; pcounter++) { | |||
| if (array[pcounter] != null | |||
| && pcounter != icounter | |||
| && target.equals(array[pcounter].getName())) { | |||
| candidateFound = false; | |||
| candidateFound = false; | |||
| break; | |||
| } | |||
| } | |||
| if (candidateFound) { | |||
| break; | |||
| } | |||
| } | |||
| if (candidateFound) { | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| if (candidateFound) { | |||
| @@ -1297,10 +1298,12 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { | |||
| if (i >= 0) { | |||
| String cwd = ftp.printWorkingDirectory(); | |||
| String parent = dir.getParent(); | |||
| if (parent != null && !ftp.changeWorkingDirectory(resolveFile(parent))) { | |||
| throw new BuildException( | |||
| if (parent != null) { | |||
| if (!ftp.changeWorkingDirectory(resolveFile(parent))) { | |||
| throw new BuildException( | |||
| "could not change to directory: %s", | |||
| ftp.getReplyString()); | |||
| } | |||
| } | |||
| while (i >= 0) { | |||
| @@ -134,8 +134,10 @@ public class ScpFromMessageBySftp extends ScpFromMessage { | |||
| final String remoteFile, | |||
| final File localFile) throws SftpException { | |||
| String pwd = remoteFile; | |||
| if (remoteFile.lastIndexOf('/') != -1 && remoteFile.length() > 1) { | |||
| pwd = remoteFile.substring(0, remoteFile.lastIndexOf('/')); | |||
| if (remoteFile.lastIndexOf('/') != -1) { | |||
| if (remoteFile.length() > 1) { | |||
| pwd = remoteFile.substring(0, remoteFile.lastIndexOf('/')); | |||
| } | |||
| } | |||
| channel.cd(pwd); | |||
| if (!localFile.exists()) { | |||
| @@ -166,8 +168,10 @@ public class ScpFromMessageBySftp extends ScpFromMessage { | |||
| if (!localFile.exists()) { | |||
| final String path = localFile.getAbsolutePath(); | |||
| final int i = path.lastIndexOf(File.pathSeparator); | |||
| if (i != -1 && path.length() > File.pathSeparator.length()) { | |||
| new File(path.substring(0, i)).mkdirs(); | |||
| if (i != -1) { | |||
| if (path.length() > File.pathSeparator.length()) { | |||
| new File(path.substring(0, i)).mkdirs(); | |||
| } | |||
| } | |||
| } | |||
| @@ -198,15 +198,16 @@ public class Symlink extends DispatchTask { | |||
| public void recreate() throws BuildException { | |||
| try { | |||
| if (fileSets.isEmpty()) { | |||
| handleError("File set identifying link file(s) required for action recreate"); | |||
| handleError( | |||
| "File set identifying link file(s) required for action recreate"); | |||
| return; | |||
| } | |||
| final Properties links = loadLinks(fileSets); | |||
| for (final String lnk : links.stringPropertyNames()) { | |||
| final String res = links.getProperty(lnk); | |||
| try { | |||
| if (Files.isSymbolicLink(Paths.get(lnk)) | |||
| && new File(lnk).getCanonicalPath().equals(new File(res).getCanonicalPath())) { | |||
| if (Files.isSymbolicLink(Paths.get(lnk)) && | |||
| new File(lnk).getCanonicalPath().equals(new File(res).getCanonicalPath())) { | |||
| // it's already a symlink and the symlink target is the same | |||
| // as the target noted in the properties file. So there's no | |||
| // need to recreate it | |||
| @@ -215,8 +216,7 @@ public class Symlink extends DispatchTask { | |||
| continue; | |||
| } | |||
| } catch (IOException e) { | |||
| final String errMessage = "Failed to check if path " + lnk | |||
| + " is a symbolic link, linking to " + res; | |||
| final String errMessage = "Failed to check if path " + lnk + " is a symbolic link, linking to " + res; | |||
| if (failonerror) { | |||
| throw new BuildException(errMessage, e); | |||
| } | |||
| @@ -351,9 +351,10 @@ public abstract class DefaultRmicAdapter implements RmicAdapter { | |||
| attributes.log("Compilation " + cmd.describeArguments(), | |||
| Project.MSG_VERBOSE); | |||
| String niceSourceList = (compileList.size() == 1 ? "File" : "Files") + " to be compiled:" | |||
| + compileList.stream().peek(arg -> cmd.createArgument().setValue(arg)) | |||
| .collect(Collectors.joining(" ")); | |||
| String niceSourceList = (compileList.size() == 1 ? "File" : "Files") + | |||
| " to be compiled:" + | |||
| compileList.stream().peek(arg -> cmd.createArgument().setValue(arg)) | |||
| .collect(Collectors.joining(" ")); | |||
| attributes.log(niceSourceList, Project.MSG_VERBOSE); | |||
| } | |||
| @@ -103,7 +103,7 @@ public abstract class EnumeratedAttribute { | |||
| * @return true if the value is valid | |||
| */ | |||
| public final boolean containsValue(String value) { | |||
| return indexOfValue(value) != -1; | |||
| return (indexOfValue(value) != -1); | |||
| } | |||
| /** | |||
| @@ -331,7 +331,8 @@ public class Path extends DataType implements Cloneable, ResourceCollection { | |||
| * @param tryUserDir if true try the user directory if the file is not present | |||
| */ | |||
| public void addExisting(Path source, boolean tryUserDir) { | |||
| File userDir = tryUserDir ? new File(System.getProperty("user.dir")) : null; | |||
| File userDir = (tryUserDir) ? new File(System.getProperty("user.dir")) | |||
| : null; | |||
| for (String name : source.list()) { | |||
| File f = resolveFile(getProject(), name); | |||
| @@ -348,7 +348,7 @@ public class Permissions { | |||
| */ | |||
| @Override | |||
| public String toString() { | |||
| return String.format("Permission: %s (\"%s\", \"%s\")", className, name, actions); | |||
| return ("Permission: " + className + " (\"" + name + "\", \"" + actions + "\")"); | |||
| } | |||
| } | |||
| } | |||
| @@ -342,7 +342,7 @@ public class RedirectorElement extends DataType { | |||
| if (isReference()) { | |||
| throw tooManyAttributes(); | |||
| } | |||
| this.append = append ? Boolean.TRUE : Boolean.FALSE; | |||
| this.append = ((append) ? Boolean.TRUE : Boolean.FALSE); | |||
| } | |||
| /** | |||
| @@ -356,7 +356,7 @@ public class RedirectorElement extends DataType { | |||
| if (isReference()) { | |||
| throw tooManyAttributes(); | |||
| } | |||
| this.alwaysLog = alwaysLog ? Boolean.TRUE : Boolean.FALSE; | |||
| this.alwaysLog = ((alwaysLog) ? Boolean.TRUE : Boolean.FALSE); | |||
| } | |||
| /** | |||
| @@ -368,7 +368,8 @@ public class RedirectorElement extends DataType { | |||
| if (isReference()) { | |||
| throw tooManyAttributes(); | |||
| } | |||
| this.createEmptyFiles = createEmptyFiles ? Boolean.TRUE : Boolean.FALSE; | |||
| this.createEmptyFiles = ((createEmptyFiles) | |||
| ? Boolean.TRUE : Boolean.FALSE); | |||
| } | |||
| /** | |||
| @@ -145,15 +145,17 @@ public class URLResource extends Resource implements URLProvider { | |||
| if (isReference()) { | |||
| return ((URLResource) getCheckedRef()).getURL(); | |||
| } | |||
| if (url == null && baseURL != null) { | |||
| if (relPath == null) { | |||
| throw new BuildException("must provide relativePath" | |||
| + " attribute when using baseURL."); | |||
| } | |||
| try { | |||
| url = new URL(baseURL, relPath); | |||
| } catch (MalformedURLException e) { | |||
| throw new BuildException(e); | |||
| if (url == null) { | |||
| if (baseURL != null) { | |||
| if (relPath == null) { | |||
| throw new BuildException("must provide relativePath" | |||
| + " attribute when using baseURL."); | |||
| } | |||
| try { | |||
| url = new URL(baseURL, relPath); | |||
| } catch (MalformedURLException e) { | |||
| throw new BuildException(e); | |||
| } | |||
| } | |||
| } | |||
| return url; | |||
| @@ -137,12 +137,10 @@ public class ZipResource extends ArchiveResource { | |||
| + getArchive()); | |||
| } | |||
| return new FilterInputStream(z.getInputStream(ze)) { | |||
| @Override | |||
| public void close() throws IOException { | |||
| FileUtils.close(in); | |||
| z.close(); | |||
| } | |||
| @Override | |||
| protected void finalize() throws Throwable { | |||
| try { | |||
| close(); | |||
| @@ -278,8 +278,8 @@ public final class SelectorUtils { | |||
| } | |||
| // Find the pattern between padIdxStart & padIdxTmp in str between | |||
| // strIdxStart & strIdxEnd | |||
| int patLength = patIdxTmp - patIdxStart - 1; | |||
| int strLength = strIdxEnd - strIdxStart + 1; | |||
| int patLength = (patIdxTmp - patIdxStart - 1); | |||
| int strLength = (strIdxEnd - strIdxStart + 1); | |||
| int foundIdx = -1; | |||
| strLoop: | |||
| for (int i = 0; i <= strLength - patLength; i++) { | |||
| @@ -433,8 +433,8 @@ public final class SelectorUtils { | |||
| } | |||
| // Find the pattern between padIdxStart & padIdxTmp in str between | |||
| // strIdxStart & strIdxEnd | |||
| int patLength = patIdxTmp - patIdxStart - 1; | |||
| int strLength = strIdxEnd - strIdxStart + 1; | |||
| int patLength = (patIdxTmp - patIdxStart - 1); | |||
| int strLength = (strIdxEnd - strIdxStart + 1); | |||
| int foundIdx = -1; | |||
| strLoop: | |||
| for (int i = 0; i <= strLength - patLength; i++) { | |||
| @@ -89,7 +89,6 @@ public class TokenizedPattern { | |||
| /** | |||
| * @return The pattern String | |||
| */ | |||
| @Override | |||
| public String toString() { | |||
| return pattern; | |||
| } | |||
| @@ -103,13 +102,11 @@ public class TokenizedPattern { | |||
| * | |||
| * @param o Object | |||
| */ | |||
| @Override | |||
| public boolean equals(Object o) { | |||
| return o instanceof TokenizedPattern | |||
| && pattern.equals(((TokenizedPattern) o).pattern); | |||
| } | |||
| @Override | |||
| public int hashCode() { | |||
| return pattern.hashCode(); | |||
| } | |||
| @@ -38,7 +38,6 @@ public class EqualComparator implements Comparator<Object> { | |||
| * @param o2 the second object | |||
| * @return 0, if both are equal, otherwise 1 | |||
| */ | |||
| @Override | |||
| public int compare(Object o1, Object o2) { | |||
| if (o1 == null) { | |||
| if (o2 == null) { | |||
| @@ -46,14 +45,13 @@ public class EqualComparator implements Comparator<Object> { | |||
| } | |||
| return 0; | |||
| } | |||
| return o1.equals(o2) ? 0 : 1; | |||
| return (o1.equals(o2)) ? 0 : 1; | |||
| } | |||
| /** | |||
| * Override Object.toString(). | |||
| * @return information about this comparator | |||
| */ | |||
| @Override | |||
| public String toString() { | |||
| return "EqualComparator"; | |||
| } | |||
| @@ -73,7 +73,6 @@ public class HashvalueAlgorithm implements Algorithm { | |||
| * Override Object.toString(). | |||
| * @return information about this comparator | |||
| */ | |||
| @Override | |||
| public String toString() { | |||
| return "HashvalueAlgorithm"; | |||
| } | |||
| @@ -459,7 +459,7 @@ public class ModifiedSelector extends BaseExtendSelector | |||
| + resource.getName() | |||
| + "' does not provide an InputStream, so it is not checked. " | |||
| + "According to 'selres' attribute value it is " | |||
| + (selectResourcesWithoutInputStream ? "" : " not") | |||
| + ((selectResourcesWithoutInputStream) ? "" : " not") | |||
| + "selected.", Project.MSG_INFO); | |||
| return selectResourcesWithoutInputStream; | |||
| } catch (Exception e) { | |||
| @@ -118,7 +118,7 @@ public class PropertiesfileCache implements Cache { | |||
| */ | |||
| @Override | |||
| public boolean isValid() { | |||
| return cachefile != null; | |||
| return (cachefile != null); | |||
| } | |||
| @@ -91,7 +91,7 @@ public class Base64Converter { | |||
| out[outIndex++] = ALPHABET[bits6]; | |||
| bits6 = (bits24 & POS_1_MASK) >> POS_1_SHIFT; | |||
| out[outIndex++] = ALPHABET[bits6]; | |||
| bits6 = bits24 & POS_0_MASK; | |||
| bits6 = (bits24 & POS_0_MASK); | |||
| out[outIndex++] = ALPHABET[bits6]; | |||
| } | |||
| if (octetString.length - i == 2) { | |||
| @@ -515,7 +515,7 @@ public class DOMElementWriter { | |||
| int prevEnd = 0; | |||
| int cdataEndPos = value.indexOf("]]>"); | |||
| while (prevEnd < len) { | |||
| final int end = cdataEndPos < 0 ? len : cdataEndPos; | |||
| final int end = (cdataEndPos < 0 ? len : cdataEndPos); | |||
| // Write out stretches of legal characters in the range [prevEnd, end). | |||
| int prevLegalCharPos = prevEnd; | |||
| while (prevLegalCharPos < end) { | |||
| @@ -1181,7 +1181,7 @@ public class FileUtils { | |||
| if (!l.endsWith(File.separator)) { | |||
| l += File.separator; | |||
| } | |||
| return p.startsWith(l) ? p.substring(l.length()) : p; | |||
| return (p.startsWith(l)) ? p.substring(l.length()) : p; | |||
| } | |||
| /** | |||
| @@ -198,8 +198,10 @@ public class GlobPatternMapper implements FileNameMapper { | |||
| if (!caseSensitive) { | |||
| name = name.toLowerCase(); | |||
| } | |||
| if (handleDirSep && name.contains("\\")) { | |||
| name = name.replace('\\', '/'); | |||
| if (handleDirSep) { | |||
| if (name.contains("\\")) { | |||
| name = name.replace('\\', '/'); | |||
| } | |||
| } | |||
| return name; | |||
| } | |||
| @@ -50,7 +50,6 @@ public class KeepAliveInputStream extends FilterInputStream { | |||
| * This method does nothing. | |||
| * @throws IOException as we are overriding FilterInputStream. | |||
| */ | |||
| @Override | |||
| public void close() throws IOException { | |||
| // do not close the stream | |||
| } | |||
| @@ -50,7 +50,6 @@ public class KeepAliveOutputStream extends FilterOutputStream { | |||
| * This method does nothing. | |||
| * @throws IOException as we are overriding FilterOutputStream. | |||
| */ | |||
| @Override | |||
| public void close() throws IOException { | |||
| // do not close the stream | |||
| } | |||
| @@ -294,9 +294,11 @@ public class LayoutPreservingProperties extends Properties { | |||
| boolean writtenSep = false; | |||
| for (LogicalLine line : logicalLines.subList(skipLines, totalLines)) { | |||
| if (line instanceof Pair) { | |||
| if (((Pair) line).isNew() && !writtenSep) { | |||
| osw.write(eol); | |||
| writtenSep = true; | |||
| if (((Pair) line).isNew()) { | |||
| if (!writtenSep) { | |||
| osw.write(eol); | |||
| writtenSep = true; | |||
| } | |||
| } | |||
| osw.write(line.toString() + eol); | |||
| } else if (line != null) { | |||
| @@ -55,7 +55,6 @@ public class LazyHashtable<K, V> extends Hashtable<K, V> { | |||
| * Get a enumeration over the elements. | |||
| * @return an enumeration. | |||
| */ | |||
| @Override | |||
| public Enumeration<V> elements() { | |||
| initAll(); | |||
| return super.elements(); | |||
| @@ -65,7 +64,6 @@ public class LazyHashtable<K, V> extends Hashtable<K, V> { | |||
| * Check if the table is empty. | |||
| * @return true if it is. | |||
| */ | |||
| @Override | |||
| public boolean isEmpty() { | |||
| initAll(); | |||
| return super.isEmpty(); | |||
| @@ -75,7 +73,6 @@ public class LazyHashtable<K, V> extends Hashtable<K, V> { | |||
| * Get the size of the table. | |||
| * @return the size. | |||
| */ | |||
| @Override | |||
| public int size() { | |||
| initAll(); | |||
| return super.size(); | |||
| @@ -86,7 +83,6 @@ public class LazyHashtable<K, V> extends Hashtable<K, V> { | |||
| * @param value the value to look for. | |||
| * @return true if the table contains the value. | |||
| */ | |||
| @Override | |||
| public boolean contains(Object value) { | |||
| initAll(); | |||
| return super.contains(value); | |||
| @@ -97,7 +93,6 @@ public class LazyHashtable<K, V> extends Hashtable<K, V> { | |||
| * @param value the key to look for. | |||
| * @return true if the table contains key. | |||
| */ | |||
| @Override | |||
| public boolean containsKey(Object value) { | |||
| initAll(); | |||
| return super.containsKey(value); | |||
| @@ -108,7 +103,6 @@ public class LazyHashtable<K, V> extends Hashtable<K, V> { | |||
| * @param value the value to look for. | |||
| * @return true if the table contains the value. | |||
| */ | |||
| @Override | |||
| public boolean containsValue(Object value) { | |||
| return contains(value); | |||
| } | |||
| @@ -117,7 +111,6 @@ public class LazyHashtable<K, V> extends Hashtable<K, V> { | |||
| * Get an enumeration over the keys. | |||
| * @return an enumeration. | |||
| */ | |||
| @Override | |||
| public Enumeration<K> keys() { | |||
| initAll(); | |||
| return super.keys(); | |||
| @@ -59,7 +59,6 @@ public class LinkedHashtable<K, V> extends Hashtable<K, V> { | |||
| map = new LinkedHashMap<>(m); | |||
| } | |||
| @Override | |||
| public synchronized void clear() { | |||
| map.clear(); | |||
| } | |||
| @@ -118,10 +118,13 @@ public class RegexpPatternMapper implements FileNameMapper { | |||
| if (sourceFileName == null) { | |||
| return null; | |||
| } | |||
| if (handleDirSep && sourceFileName.contains("\\")) { | |||
| sourceFileName = sourceFileName.replace('\\', '/'); | |||
| if (handleDirSep) { | |||
| if (sourceFileName.contains("\\")) { | |||
| sourceFileName = sourceFileName.replace('\\', '/'); | |||
| } | |||
| } | |||
| if (reg == null || to == null || !reg.matches(sourceFileName, regexpOptions)) { | |||
| if (reg == null || to == null | |||
| || !reg.matches(sourceFileName, regexpOptions)) { | |||
| return null; | |||
| } | |||
| return new String[] {replaceReferences(sourceFileName)}; | |||
| @@ -36,7 +36,6 @@ public class StreamUtils { | |||
| public static <T> Stream<T> enumerationAsStream(Enumeration<T> e) { | |||
| return StreamSupport.stream( | |||
| new Spliterators.AbstractSpliterator<T>(Long.MAX_VALUE, Spliterator.ORDERED) { | |||
| @Override | |||
| public boolean tryAdvance(Consumer<? super T> action) { | |||
| if (e.hasMoreElements()) { | |||
| action.accept(e.nextElement()); | |||
| @@ -44,7 +43,6 @@ public class StreamUtils { | |||
| } | |||
| return false; | |||
| } | |||
| @Override | |||
| public void forEachRemaining(Consumer<? super T> action) { | |||
| while (e.hasMoreElements()) { | |||
| action.accept(e.nextElement()); | |||
| @@ -157,7 +157,6 @@ public class WorkerAnt extends Thread { | |||
| * Run the task, which is skipped if null. | |||
| * When invoked again, the task is re-run. | |||
| */ | |||
| @Override | |||
| public void run() { | |||
| try { | |||
| if (task != null) { | |||
| @@ -42,7 +42,7 @@ public interface BZip2Constants { | |||
| int N_GROUPS = 6; | |||
| int G_SIZE = 50; | |||
| int N_ITERS = 4; | |||
| int MAX_SELECTORS = 2 + 900000 / G_SIZE; | |||
| int MAX_SELECTORS = (2 + (900000 / G_SIZE)); | |||
| int NUM_OVERSHOOT_BYTES = 20; | |||
| /** | |||
| @@ -686,17 +686,17 @@ class BlockSort { | |||
| i2 -= lastPlus1; | |||
| } | |||
| workDoneShadow++; | |||
| } else if (quadrant[i1 + 3] > quadrant[i2 + 3]) { | |||
| } else if ((quadrant[i1 + 3] > quadrant[i2 + 3])) { | |||
| continue HAMMER; | |||
| } else { | |||
| break HAMMER; | |||
| } | |||
| } else if ((block[i2 + 4] & 0xff) < (block[i1 + 4] & 0xff)) { | |||
| } else if ((block[i1 + 4] & 0xff) > (block[i2 + 4] & 0xff)) { | |||
| continue HAMMER; | |||
| } else { | |||
| break HAMMER; | |||
| } | |||
| } else if (quadrant[i1 + 2] > quadrant[i2 + 2]) { | |||
| } else if ((quadrant[i1 + 2] > quadrant[i2 + 2])) { | |||
| continue HAMMER; | |||
| } else { | |||
| break HAMMER; | |||
| @@ -706,7 +706,7 @@ class BlockSort { | |||
| } else { | |||
| break HAMMER; | |||
| } | |||
| } else if (quadrant[i1 + 1] > quadrant[i2 + 1]) { | |||
| } else if ((quadrant[i1 + 1] > quadrant[i2 + 1])) { | |||
| continue HAMMER; | |||
| } else { | |||
| break HAMMER; | |||
| @@ -716,7 +716,7 @@ class BlockSort { | |||
| } else { | |||
| break HAMMER; | |||
| } | |||
| } else if (quadrant[i1] > quadrant[i2]) { | |||
| } else if ((quadrant[i1] > quadrant[i2])) { | |||
| continue HAMMER; | |||
| } else { | |||
| break HAMMER; | |||
| @@ -900,8 +900,8 @@ class BlockSort { | |||
| } | |||
| } | |||
| private static final int SETMASK = 1 << 21; | |||
| private static final int CLEARMASK = ~SETMASK; | |||
| private static final int SETMASK = (1 << 21); | |||
| private static final int CLEARMASK = (~SETMASK); | |||
| final void mainSort(final CBZip2OutputStream.Data dataShadow, | |||
| final int lastShadow) { | |||
| @@ -1024,7 +1024,7 @@ class BlockSort { | |||
| copy[j] = ftab[(j << 8) + ss] & CLEARMASK; | |||
| } | |||
| for (int j = ftab[ss << 8] & CLEARMASK, hj = ftab[ss + 1 << 8] & CLEARMASK; j < hj; j++) { | |||
| for (int j = ftab[ss << 8] & CLEARMASK, hj = (ftab[(ss + 1) << 8] & CLEARMASK); j < hj; j++) { | |||
| final int fmap_j = fmap[j]; | |||
| c1 = block[fmap_j] & 0xff; | |||
| if (!bigDone[c1]) { | |||
| @@ -143,14 +143,14 @@ public class CBZip2OutputStream extends OutputStream | |||
| * purposes. If you don't know what it means then you don't need | |||
| * it. | |||
| */ | |||
| protected static final int SETMASK = 1 << 21; | |||
| protected static final int SETMASK = (1 << 21); | |||
| /** | |||
| * This constant is accessible by subclasses for historical | |||
| * purposes. If you don't know what it means then you don't need | |||
| * it. | |||
| */ | |||
| protected static final int CLEARMASK = ~SETMASK; | |||
| protected static final int CLEARMASK = (~SETMASK); | |||
| /** | |||
| * This constant is accessible by subclasses for historical | |||
| @@ -322,9 +322,14 @@ public class CBZip2OutputStream extends OutputStream | |||
| final int weight_n1 = weight[n1]; | |||
| final int weight_n2 = weight[n2]; | |||
| weight[nNodes] = (weight_n1 & 0xffffff00) + (weight_n2 & 0xffffff00) | |||
| | 1 + ((weight_n1 & 0x000000ff) > (weight_n2 & 0x000000ff) | |||
| ? weight_n1 & 0x000000ff : weight_n2 & 0x000000ff); | |||
| weight[nNodes] = (((weight_n1 & 0xffffff00) | |||
| + (weight_n2 & 0xffffff00)) | |||
| | | |||
| (1 + (((weight_n1 & 0x000000ff) | |||
| > (weight_n2 & 0x000000ff)) | |||
| ? (weight_n1 & 0x000000ff) | |||
| : (weight_n2 & 0x000000ff)) | |||
| )); | |||
| parent[nNodes] = -1; | |||
| nHeap++; | |||
| @@ -1560,7 +1565,7 @@ public class CBZip2OutputStream extends OutputStream | |||
| super(); | |||
| final int n = blockSize100k * BZip2Constants.baseBlockSize; | |||
| this.block = new byte[n + 1 + NUM_OVERSHOOT_BYTES]; | |||
| this.block = new byte[(n + 1 + NUM_OVERSHOOT_BYTES)]; | |||
| this.fmap = new int[n]; | |||
| this.sfmap = new char[2 * n]; | |||
| } | |||
| @@ -44,10 +44,10 @@ import java.util.Arrays; | |||
| public class TarBuffer { | |||
| /** Default record size */ | |||
| public static final int DEFAULT_RCDSIZE = 512; | |||
| public static final int DEFAULT_RCDSIZE = (512); | |||
| /** Default block size */ | |||
| public static final int DEFAULT_BLKSIZE = DEFAULT_RCDSIZE * 20; | |||
| public static final int DEFAULT_BLKSIZE = (DEFAULT_RCDSIZE * 20); | |||
| private InputStream inStream; | |||
| private OutputStream outStream; | |||
| @@ -123,7 +123,7 @@ public class TarBuffer { | |||
| this.debug = false; | |||
| this.blockSize = blockSize; | |||
| this.recordSize = recordSize; | |||
| this.recsPerBlock = this.blockSize / this.recordSize; | |||
| this.recsPerBlock = (this.blockSize / this.recordSize); | |||
| this.blockBuffer = new byte[this.blockSize]; | |||
| if (this.inStream != null) { | |||
| @@ -183,7 +183,8 @@ public class TarBuffer { | |||
| */ | |||
| public void skipRecord() throws IOException { | |||
| if (debug) { | |||
| System.err.printf("SkipRecord: recIdx = %d blkIdx = %d%n", currRecIdx, currBlkIdx); | |||
| System.err.println("SkipRecord: recIdx = " + currRecIdx | |||
| + " blkIdx = " + currBlkIdx); | |||
| } | |||
| if (inStream == null) { | |||
| @@ -205,7 +206,8 @@ public class TarBuffer { | |||
| */ | |||
| public byte[] readRecord() throws IOException { | |||
| if (debug) { | |||
| System.err.printf("ReadRecord: recIdx = %d blkIdx = %d%n", currRecIdx, currBlkIdx); | |||
| System.err.println("ReadRecord: recIdx = " + currRecIdx | |||
| + " blkIdx = " + currBlkIdx); | |||
| } | |||
| if (inStream == null) { | |||
| @@ -221,7 +223,9 @@ public class TarBuffer { | |||
| byte[] result = new byte[recordSize]; | |||
| System.arraycopy(blockBuffer, currRecIdx * recordSize, result, 0, recordSize); | |||
| System.arraycopy(blockBuffer, | |||
| (currRecIdx * recordSize), result, 0, | |||
| recordSize); | |||
| currRecIdx++; | |||
| @@ -246,7 +250,8 @@ public class TarBuffer { | |||
| int bytesNeeded = blockSize; | |||
| while (bytesNeeded > 0) { | |||
| long numBytes = inStream.read(blockBuffer, offset, bytesNeeded); | |||
| long numBytes = inStream.read(blockBuffer, offset, | |||
| bytesNeeded); | |||
| // | |||
| // NOTE | |||
| @@ -282,9 +287,12 @@ public class TarBuffer { | |||
| offset += numBytes; | |||
| bytesNeeded -= numBytes; | |||
| if (numBytes != blockSize && debug) { | |||
| System.err.printf("ReadBlock: INCOMPLETE READ %d of %d bytes read.%n", | |||
| numBytes, blockSize); | |||
| if (numBytes != blockSize) { | |||
| if (debug) { | |||
| System.err.println("ReadBlock: INCOMPLETE READ " | |||
| + numBytes + " of " + blockSize | |||
| + " bytes read."); | |||
| } | |||
| } | |||
| } | |||
| @@ -320,7 +328,8 @@ public class TarBuffer { | |||
| */ | |||
| public void writeRecord(byte[] record) throws IOException { | |||
| if (debug) { | |||
| System.err.printf("WriteRecord: recIdx = %d blkIdx = %d%n", currRecIdx, currBlkIdx); | |||
| System.err.println("WriteRecord: recIdx = " + currRecIdx | |||
| + " blkIdx = " + currBlkIdx); | |||
| } | |||
| if (outStream == null) { | |||
| @@ -341,7 +350,9 @@ public class TarBuffer { | |||
| writeBlock(); | |||
| } | |||
| System.arraycopy(record, 0, blockBuffer, currRecIdx * recordSize, recordSize); | |||
| System.arraycopy(record, 0, blockBuffer, | |||
| (currRecIdx * recordSize), | |||
| recordSize); | |||
| currRecIdx++; | |||
| } | |||
| @@ -357,7 +368,8 @@ public class TarBuffer { | |||
| */ | |||
| public void writeRecord(byte[] buf, int offset) throws IOException { | |||
| if (debug) { | |||
| System.err.printf("WriteRecord: recIdx = %d blkIdx = %d%n", currRecIdx, currBlkIdx); | |||
| System.err.println("WriteRecord: recIdx = " + currRecIdx | |||
| + " blkIdx = " + currBlkIdx); | |||
| } | |||
| if (outStream == null) { | |||
| @@ -378,7 +390,9 @@ public class TarBuffer { | |||
| writeBlock(); | |||
| } | |||
| System.arraycopy(buf, offset, blockBuffer, currRecIdx * recordSize, recordSize); | |||
| System.arraycopy(buf, offset, blockBuffer, | |||
| (currRecIdx * recordSize), | |||
| recordSize); | |||
| currRecIdx++; | |||
| } | |||
| @@ -433,7 +447,8 @@ public class TarBuffer { | |||
| if (outStream != null) { | |||
| flushBlock(); | |||
| if (outStream != System.out && outStream != System.err) { | |||
| if (outStream != System.out | |||
| && outStream != System.err) { | |||
| outStream.close(); | |||
| outStream = null; | |||
| @@ -215,7 +215,7 @@ public class TarInputStream extends FilterInputStream { | |||
| } | |||
| skip -= numRead; | |||
| } | |||
| return numToSkip - skip; | |||
| return (numToSkip - skip); | |||
| } | |||
| /** | |||
| @@ -493,8 +493,8 @@ public class TarUtils { | |||
| final long max = 1L << bits; | |||
| long val = Math.abs(value); | |||
| if (val >= max) { | |||
| throw new IllegalArgumentException("Value " + value | |||
| + " is too large for " + length + " byte field."); | |||
| throw new IllegalArgumentException("Value " + value + | |||
| " is too large for " + length + " byte field."); | |||
| } | |||
| if (negative) { | |||
| val ^= max - 1; | |||
| @@ -58,7 +58,6 @@ class Simple8BitZipEncoding implements ZipEncoding { | |||
| this.unicode = unicode; | |||
| } | |||
| @Override | |||
| public int compareTo(final Simple8BitChar a) { | |||
| return this.unicode - a.unicode; | |||
| } | |||
| @@ -136,7 +136,7 @@ public final class ZipEightByteInteger { | |||
| public static byte[] getBytes(BigInteger value) { | |||
| byte[] result = new byte[8]; | |||
| long val = value.longValue(); | |||
| result[0] = (byte) (val & BYTE_MASK); | |||
| result[0] = (byte) ((val & BYTE_MASK)); | |||
| result[BYTE_1] = (byte) ((val & BYTE_1_MASK) >> BYTE_1_SHIFT); | |||
| result[BYTE_2] = (byte) ((val & BYTE_2_MASK) >> BYTE_2_SHIFT); | |||
| result[BYTE_3] = (byte) ((val & BYTE_3_MASK) >> BYTE_3_SHIFT); | |||
| @@ -1003,7 +1003,8 @@ public class ZipFile implements Closeable { | |||
| if (ent2 == null) { | |||
| return -1; | |||
| } | |||
| final long val = ent1.getOffsetEntry().headerOffset - ent2.getOffsetEntry().headerOffset; | |||
| final long val = (ent1.getOffsetEntry().headerOffset | |||
| - ent2.getOffsetEntry().headerOffset); | |||
| return val == 0 ? 0 : val < 0 ? -1 : +1; | |||
| }; | |||
| @@ -127,7 +127,7 @@ public final class ZipLong implements Cloneable { | |||
| * must be non-negative and no larger than <tt>buf.length-4</tt> | |||
| */ | |||
| public static void putLong(long value, byte[] buf, int offset) { | |||
| buf[offset++] = (byte) (value & BYTE_MASK); | |||
| buf[offset++] = (byte) ((value & BYTE_MASK)); | |||
| buf[offset++] = (byte) ((value & BYTE_1_MASK) >> BYTE_1_SHIFT); | |||
| buf[offset++] = (byte) ((value & BYTE_2_MASK) >> BYTE_2_SHIFT); | |||
| buf[offset] = (byte) ((value & BYTE_3_MASK) >> BYTE_3_SHIFT); | |||
| @@ -1565,8 +1565,8 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| } | |||
| // requires version 2 as we are going to store length info | |||
| // in the data descriptor | |||
| return isDeflatedToOutputStream(zipMethod) | |||
| ? DATA_DESCRIPTOR_MIN_VERSION : INITIAL_VERSION; | |||
| return (isDeflatedToOutputStream(zipMethod)) | |||
| ? DATA_DESCRIPTOR_MIN_VERSION : INITIAL_VERSION; | |||
| } | |||
| private boolean isDeflatedToOutputStream(int zipMethod) { | |||
| @@ -1613,7 +1613,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * @return boolean | |||
| */ | |||
| private boolean hasZip64Extra(ZipEntry ze) { | |||
| return ze.getExtraField(Zip64ExtendedInformationExtraField.HEADER_ID) != null; | |||
| return ze.getExtraField(Zip64ExtendedInformationExtraField | |||
| .HEADER_ID) | |||
| != null; | |||
| } | |||
| /** | |||
| @@ -60,8 +60,8 @@ public class ExecStreamRedirectorTest { | |||
| if (dirListingOutput != null) { | |||
| // Compare the directory listing that was redirected to these files. | |||
| // All files should have the same content. | |||
| assertTrue("Redirected output in file " + redirectedOutputFile | |||
| + " doesn't match content in other redirected output file(s)", | |||
| assertTrue("Redirected output in file " + redirectedOutputFile + | |||
| " doesn't match content in other redirected output file(s)", | |||
| Arrays.equals(dirListingOutput, redirectedOutput)); | |||
| } | |||
| dirListingOutput = redirectedOutput; | |||
| @@ -108,28 +108,28 @@ public class JavaTest { | |||
| @Test | |||
| public void testJarAndClassName() { | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("Cannot use combination of 'classname', 'jar', 'sourcefile'"); | |||
| thrown.expectMessage("Cannot use combination of "); | |||
| buildRule.executeTarget("testJarAndClassName"); | |||
| } | |||
| @Test | |||
| public void testClassnameAndJar() { | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("Cannot use combination of 'classname', 'jar', 'module'"); | |||
| thrown.expectMessage("Cannot use combination of "); | |||
| buildRule.executeTarget("testClassnameAndJar"); | |||
| } | |||
| @Test | |||
| public void testJarAndModule() { | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("Cannot use combination of 'jar', 'module', 'sourcefile'"); | |||
| thrown.expectMessage("Cannot use combination of "); | |||
| buildRule.executeTarget("testJarAndModule"); | |||
| } | |||
| @Test | |||
| public void testModuleAndJar() { | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("Cannot use combination of 'classname', 'jar', 'module'"); | |||
| thrown.expectMessage("Cannot use combination of "); | |||
| buildRule.executeTarget("testModuleAndJar"); | |||
| } | |||
| @@ -102,8 +102,7 @@ public class JUnitLauncherTaskTest { | |||
| final Path trackerFile = setupTrackerProperty(targetName); | |||
| buildRule.executeTarget(targetName); | |||
| // make sure the right test(s) were run | |||
| Assert.assertTrue("JUnit4SampleTest test was expected to be run", wasTestRun(trackerFile, | |||
| JUnit4SampleTest.class.getName())); | |||
| Assert.assertTrue("JUnit4SampleTest test was expected to be run", wasTestRun(trackerFile, JUnit4SampleTest.class.getName())); | |||
| Assert.assertTrue("JUnit4SampleTest#testFoo was expected to succeed", verifySuccess(trackerFile, | |||
| JUnit4SampleTest.class.getName(), "testFoo")); | |||
| } | |||
| @@ -170,8 +169,7 @@ public class JUnitLauncherTaskTest { | |||
| JupiterSampleTest.class.getName(), "testFails")); | |||
| Assert.assertTrue("JupiterSampleTest#testSkipped was expected to be skipped", verifySkipped(trackerFile, | |||
| JupiterSampleTest.class.getName(), "testSkipped")); | |||
| Assert.assertFalse("ForkedTest wasn't expected to be run", wasTestRun(trackerFile, | |||
| ForkedTest.class.getName())); | |||
| Assert.assertFalse("ForkedTest wasn't expected to be run", wasTestRun(trackerFile, ForkedTest.class.getName())); | |||
| } | |||
| /** | |||
| @@ -194,9 +192,9 @@ public class JUnitLauncherTaskTest { | |||
| } | |||
| /** | |||
| * Tests that in a forked mode execution of tests, when the {@code includeJUnitPlatformLibraries} | |||
| * attribute is set to false, then the execution of such tests fails with a classloading error | |||
| * for the JUnit platform classes | |||
| * Tests that in a forked mode execution of tests, when the {@code includeJUnitPlatformLibraries} attribute | |||
| * is set to false, then the execution of such tests fails with a classloading error for the JUnit platform | |||
| * classes | |||
| * | |||
| * @throws Exception | |||
| */ | |||
| @@ -205,8 +203,8 @@ public class JUnitLauncherTaskTest { | |||
| final String targetName = "test-junit-platform-lib-excluded"; | |||
| try { | |||
| buildRule.executeTarget(targetName); | |||
| Assert.fail(targetName + " was expected to fail since JUnit platform libraries " | |||
| + "weren't included in the classpath of the forked JVM"); | |||
| Assert.fail(targetName + " was expected to fail since JUnit platform libraries " + | |||
| "weren't included in the classpath of the forked JVM"); | |||
| } catch (BuildException be) { | |||
| // expect a ClassNotFoundException for a JUnit platform class | |||
| final String cnfeMessage = ClassNotFoundException.class.getName() + ": org.junit.platform"; | |||
| @@ -215,14 +213,13 @@ public class JUnitLauncherTaskTest { | |||
| } | |||
| } | |||
| final String exclusionLogMsg = "Excluding JUnit platform libraries"; | |||
| Assert.assertTrue("JUnit platform libraries weren't excluded from classpath", | |||
| buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| Assert.assertTrue("JUnit platform libraries weren't excluded from classpath", buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| } | |||
| /** | |||
| * Tests that in a forked mode execution of tests, when the {@code includeAntRuntimeLibraries} | |||
| * attribute is set to false, then the execution of such tests fails with a classloading error | |||
| * for the Ant runtime classes | |||
| * Tests that in a forked mode execution of tests, when the {@code includeAntRuntimeLibraries} attribute | |||
| * is set to false, then the execution of such tests fails with a classloading error for the Ant runtime | |||
| * classes | |||
| * | |||
| * @throws Exception | |||
| */ | |||
| @@ -231,8 +228,8 @@ public class JUnitLauncherTaskTest { | |||
| final String targetName = "test-junit-ant-runtime-lib-excluded"; | |||
| try { | |||
| buildRule.executeTarget(targetName); | |||
| Assert.fail(targetName + " was expected to fail since JUnit platform libraries " | |||
| + "weren't included in the classpath of the forked JVM"); | |||
| Assert.fail(targetName + " was expected to fail since JUnit platform libraries " + | |||
| "weren't included in the classpath of the forked JVM"); | |||
| } catch (BuildException be) { | |||
| // expect a Error due to missing main class (which is part of Ant runtime libraries | |||
| // that we excluded) | |||
| @@ -242,15 +239,13 @@ public class JUnitLauncherTaskTest { | |||
| } | |||
| } | |||
| final String exclusionLogMsg = "Excluding Ant runtime libraries"; | |||
| Assert.assertTrue("Ant runtime libraries weren't excluded from classpath", | |||
| buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| Assert.assertTrue("Ant runtime libraries weren't excluded from classpath", buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| } | |||
| /** | |||
| * Tests that in a forked mode execution, with {@code includeJUnitPlatformLibraries} attribute | |||
| * set to false and with the test classpath explicitly including JUnit platform library jars, | |||
| * the tests are executed successfully | |||
| * Tests that in a forked mode execution, with {@code includeJUnitPlatformLibraries} attribute set to false | |||
| * and with the test classpath explicitly including JUnit platform library jars, the tests are executed successfully | |||
| * | |||
| * @throws Exception | |||
| */ | |||
| @@ -260,8 +255,7 @@ public class JUnitLauncherTaskTest { | |||
| final Path trackerFile = setupTrackerProperty(targetName); | |||
| buildRule.executeTarget(targetName); | |||
| final String exclusionLogMsg = "Excluding JUnit platform libraries"; | |||
| Assert.assertTrue("JUnit platform libraries weren't excluded from classpath", | |||
| buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| Assert.assertTrue("JUnit platform libraries weren't excluded from classpath", buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| Assert.assertTrue("JupiterSampleTest#testSucceeds was expected to succeed", verifySuccess(trackerFile, | |||
| JupiterSampleTest.class.getName(), "testSucceeds")); | |||
| Assert.assertTrue("JupiterSampleTest#testFails was expected to fail", verifyFailed(trackerFile, | |||
| @@ -269,9 +263,8 @@ public class JUnitLauncherTaskTest { | |||
| } | |||
| /** | |||
| * Tests that in a forked mode execution, with {@code includeAntRuntimeLibraries} attribute | |||
| * set to false and with the test classpath explicitly including Ant runtime library jars, | |||
| * the tests are executed successfully | |||
| * Tests that in a forked mode execution, with {@code includeAntRuntimeLibraries} attribute set to false | |||
| * and with the test classpath explicitly including Ant runtime library jars, the tests are executed successfully | |||
| * | |||
| * @throws Exception | |||
| */ | |||
| @@ -288,8 +281,7 @@ public class JUnitLauncherTaskTest { | |||
| // run the target | |||
| buildRule.executeTarget(targetName); | |||
| final String exclusionLogMsg = "Excluding Ant runtime libraries"; | |||
| Assert.assertTrue("Ant runtime libraries weren't excluded from classpath", | |||
| buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| Assert.assertTrue("Ant runtime libraries weren't excluded from classpath", buildRule.getFullLog().contains(exclusionLogMsg)); | |||
| Assert.assertTrue("JupiterSampleTest#testSucceeds was expected to succeed", verifySuccess(trackerFile, | |||
| JupiterSampleTest.class.getName(), "testSucceeds")); | |||
| Assert.assertTrue("JupiterSampleTest#testFails was expected to fail", verifyFailed(trackerFile, | |||
| @@ -303,9 +295,8 @@ public class JUnitLauncherTaskTest { | |||
| } | |||
| /** | |||
| * Tests that in a forked mode execution, with {@code includeAntRuntimeLibraries} and | |||
| * {@code includeJUnitPlatformLibraries} attributes set to false and with the test classpath | |||
| * explicitly including Ant runtime and JUnit platform library jars, | |||
| * Tests that in a forked mode execution, with {@code includeAntRuntimeLibraries} and {@code includeJUnitPlatformLibraries} | |||
| * attributes set to false and with the test classpath explicitly including Ant runtime and JUnit platform library jars, | |||
| * the tests are executed successfully | |||
| * | |||
| * @throws Exception | |||