diff --git a/src/main/org/apache/tools/ant/filters/BaseFilterReader.java b/src/main/org/apache/tools/ant/filters/BaseFilterReader.java index d4ec80dea..25a354b68 100644 --- a/src/main/org/apache/tools/ant/filters/BaseFilterReader.java +++ b/src/main/org/apache/tools/ant/filters/BaseFilterReader.java @@ -91,24 +91,27 @@ public abstract class BaseFilterReader } /** - * Create a new filtered reader. + * Creates a new filtered reader. * - * @param in a Reader object providing the underlying stream. + * @param in A Reader object providing the underlying stream. + * Must not be null. + * */ public BaseFilterReader(final Reader in) { super(in); } /** - * Read characters into a portion of an array. This method will block + * Reads characters into a portion of an array. This method will block * until some input is available, an I/O error occurs, or the end of the * stream is reached. * - * @param cbuf Destination buffer - * @param off Offset at which to start storing characters - * @param len Maximum number of characters to read + * @param cbuf Destination buffer to write characters to. + * Must not be null. + * @param off Offset at which to start storing characters. + * @param len Maximum number of characters to read. * - * @return The number of characters read, or -1 if the end of the + * @return the number of characters read, or -1 if the end of the * stream has been reached * * @exception IOException If an I/O error occurs @@ -130,12 +133,12 @@ public abstract class BaseFilterReader } /** - * Skip characters. This method will block until some characters are + * Skips characters. This method will block until some characters are * available, an I/O error occurs, or the end of the stream is reached. * * @param n The number of characters to skip * - * @return The number of characters actually skipped + * @return the number of characters actually skipped * * @exception IllegalArgumentException If n is negative. * @exception IOException If an I/O error occurs @@ -154,51 +157,76 @@ public abstract class BaseFilterReader } /** - * Set the initialized status. + * Sets the initialized status. + * + * @param initialized Whether or not the filter is initialized. */ protected final void setInitialized(final boolean initialized) { this.initialized = initialized; } /** - * Get the initialized status. + * Returns the initialized status. + * + * @return whether or not the filter is initialized */ protected final boolean getInitialized() { return initialized; } /** - * Set the project to work with + * Sets the project to work with. + * + * @param project The project this filter is part of. + * Should not be null. */ public final void setProject(final Project project) { this.project = project; } /** - * Get the project + * Returns the project this filter is part of. + * + * @return the project this filter is part of */ protected final Project getProject() { return project; } /** - * Read till EOL + * Reads a line of text ending with '\n' (or until the end of the stream). + * The returned String retains the '\n'. + * + * @return the line read, or null if the end of the stream + * has already been reached + * + * @throws IOException if the underlying reader throws one during reading */ protected final String readLine() throws IOException { int ch = in.read(); - String line = (ch == -1) ? null : ""; + + if (ch==-1) + return null; + + StringBuffer line = new StringBuffer(); + line.append ((char)ch); + while (ch != -1) { - line += (char) ch; + line.append ((char)ch); if (ch == '\n') { break; } ch = in.read(); } - return line; + return line.toString(); } /** - * Read till EOF + * Reads to the end of the stream, returning the contents as a String. + * + * @return the remaining contents of the reader, as a String + * + * @throws IOException if the underlying reader throws one during reading */ protected final String readFully() throws IOException { return FileUtils.readFully(in, 8192);