commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: svn commit: r1409449 - in /commons/proper/csv/trunk/src: main/java/org/apache/commons/csv/ test/java/org/apache/commons/csv/ test/java/org/apache/commons/csv/perf/
Date Thu, 15 Nov 2012 13:42:24 GMT
On Thu, Nov 15, 2012 at 8:27 AM, Benedikt Ritter <beneritter@gmail.com>wrote:

> Ah okay, thought that is supposed to happen on a new issue in JIRA. Okay
> then :)
>

In this case, I think that keeping the same Jira makes sense because it is
still about the same change/feature.

Gary


>
> 2012/11/15 Gary Gregory <garydgregory@gmail.com>
>
> > I will when we are done. I thought you said there was one more thing to
> do?
> >
> > Gary
> >
> > On Nov 15, 2012, at 4:24, Benedikt Ritter <beneritter@gmail.com> wrote:
> >
> > > Hi Gary,
> > >
> > > can you add this to changes.xml please ;-)
> > >
> > > Benedikt
> > >
> > >
> > > 2012/11/14 <ggregory@apache.org>
> > >
> > >> Author: ggregory
> > >> Date: Wed Nov 14 21:50:36 2012
> > >> New Revision: 1409449
> > >>
> > >> URL: http://svn.apache.org/viewvc?rev=1409449&view=rev
> > >> Log:
> > >> [CSV-68] Use the Builder pattern for CSVFormat.
> > >>
> > >> Added:
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatBuilderTest.java
> > >>  (with props)
> > >> Modified:
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFileParserTest.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexerTest.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> > >>
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/perf/PerformanceTest.java
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -30,6 +30,8 @@ import java.io.Reader;
> > >> import java.io.Serializable;
> > >> import java.io.StringWriter;
> > >>
> > >> +import org.apache.commons.csv.CSVFormat.CSVFormatBuilder;
> > >> +
> > >> /**
> > >>  * The format specification of a CSV file.
> > >>  *
> > >> @@ -41,13 +43,6 @@ public class CSVFormat implements Serial
> > >>
> > >>     private static final long serialVersionUID = 1L;
> > >>
> > >> -    /**
> > >> -     * Constant char to use for disabling comments, escapes and
> > >> encapsulation. The value -2 is used because it
> > >> -     * won't be confused with an EOF signal (-1), and because the
> > Unicode
> > >> value {@code FFFE} would be encoded as two chars
> > >> -     * (using surrogates) and thus there should never be a collision
> > with
> > >> a real text char.
> > >> -     */
> > >> -    private static final char DISABLED = '\ufffe';
> > >> -
> > >>     private final char delimiter;
> > >>     private final Character quoteChar;
> > >>     private final Quote quotePolicy;
> > >> @@ -59,11 +54,6 @@ public class CSVFormat implements Serial
> > >>     private final String[] header;
> > >>
> > >>     /**
> > >> -     * Starting format; used for creating other formats.
> > >> -     */
> > >> -    private static final CSVFormat PRISTINE = new CSVFormat(DISABLED,
> > >> null, null, null, null, false, false, null, null);
> > >> -
> > >> -    /**
> > >>      * Comma separated format as defined by <a href="
> > >> http://tools.ietf.org/html/rfc4180">RFC 4180</a>.
> > >>      * <ul>
> > >>      * <li>withDelimiter(',')</li>
> > >> @@ -72,10 +62,9 @@ public class CSVFormat implements Serial
> > >>      * </ul>
> > >>      */
> > >>     public static final CSVFormat RFC4180 =
> > >> -            PRISTINE
> > >> -            .withDelimiter(COMMA)
> > >> -            .withQuoteChar(DOUBLE_QUOTE)
> > >> -            .withRecordSeparator(CRLF);
> > >> +            defaults()
> > >> +            .withIgnoreEmptyLines(false)
> > >> +            .build();
> > >>
> > >>     /**
> > >>      * Standard comma separated format, as for {@link #RFC4180} but
> > >> allowing blank lines.
> > >> @@ -87,8 +76,8 @@ public class CSVFormat implements Serial
> > >>      * </ul>
> > >>      */
> > >>     public static final CSVFormat DEFAULT = // TODO rename to
> something
> > >> more meaningful
> > >> -            RFC4180
> > >> -            .withIgnoreEmptyLines(true);
> > >> +            defaults()
> > >> +            .build();
> > >>
> > >>     /**
> > >>      * Excel file format (using a comma as the value delimiter). Note
> > >> that the actual value delimiter used by Excel is
> > >> @@ -108,19 +97,16 @@ public class CSVFormat implements Serial
> > >>      * Note: this is currently the same as RFC4180
> > >>      */
> > >>     public static final CSVFormat EXCEL =
> > >> -            PRISTINE
> > >> -            .withDelimiter(COMMA)
> > >> -            .withQuoteChar(DOUBLE_QUOTE)
> > >> -            .withRecordSeparator(CRLF);
> > >> +            defaults()
> > >> +            .withIgnoreEmptyLines(false)
> > >> +            .build();
> > >>
> > >>     /** Tab-delimited format, with quote; leading and trailing spaces
> > >> ignored. */
> > >>     public static final CSVFormat TDF =
> > >> -            PRISTINE
> > >> +            defaults()
> > >>             .withDelimiter(TAB)
> > >> -            .withQuoteChar(DOUBLE_QUOTE)
> > >>             .withIgnoreSurroundingSpaces(true)
> > >> -            .withIgnoreEmptyLines(true)
> > >> -            .withRecordSeparator(CRLF);
> > >> +            .build();
> > >>
> > >>     /**
> > >>      * Default MySQL format used by the <tt>SELECT INTO OUTFILE</tt>
> and
> > >> <tt>LOAD DATA INFILE</tt> operations. This is
> > >> @@ -131,20 +117,36 @@ public class CSVFormat implements Serial
> > >>      *      http://dev.mysql.com/doc/refman/5.1/en/load-data.html</a>
> > >>      */
> > >>     public static final CSVFormat MYSQL =
> > >> -            PRISTINE
> > >> +            defaults()
> > >>             .withDelimiter(TAB)
> > >> +            .withQuoteChar(null)
> > >>             .withEscape(ESCAPE)
> > >> -            .withRecordSeparator(LF);
> > >> +            .withIgnoreEmptyLines(false)
> > >> +            .withRecordSeparator(LF)
> > >> +            .build();
> > >>
> > >>     /**
> > >> -     * Creates a basic CSV format.
> > >> +     * Factory method for creating CSV formats.
> > >>      *
> > >>      * @param delimiter
> > >>      *            the char used for value separation, must not be a
> line
> > >> break character
> > >>      * @throws IllegalArgumentException if the delimiter is a line
> break
> > >> character
> > >>      */
> > >> -    public CSVFormat(char delimiter){
> > >> -        this(delimiter,  null, null, null, null, false, false, null,
> > >> null);
> > >> +    public static CSVFormatBuilder newFormat(char delimiter) {
> > >> +        return new CSVFormatBuilder(delimiter);
> > >> +    }
> > >> +
> > >> +    /**
> > >> +     * Standard comma separated format, as for {@link #RFC4180} but
> > >> allowing blank lines.
> > >> +     * <ul>
> > >> +     * <li>withDelimiter(',')</li>
> > >> +     * <li>withQuoteChar('"')</li>
> > >> +     * <li>withEmptyLinesIgnored(true)</li>
> > >> +     * <li>withLineSeparator(CRLF)</li>
> > >> +     * </ul>
> > >> +     */
> > >> +    public static CSVFormatBuilder defaults() {
> > >> +        return new CSVFormatBuilder(COMMA, DOUBLE_QUOTE, null, null,
> > >> null, false, true, CRLF, null);
> > >>     }
> > >>
> > >>     /**
> > >> @@ -170,8 +172,7 @@ public class CSVFormat implements Serial
> > >>      *            the header
> > >>      * @throws IllegalArgumentException if the delimiter is a line
> break
> > >> character
> > >>      */
> > >> -    // package protected for use by test code
> > >> -    CSVFormat(final char delimiter, final Character quoteChar, final
> > >> Quote quotePolicy, final Character commentStart, final Character
> escape,
> > >> final
> > >> +    private CSVFormat(final char delimiter, final Character
> quoteChar,
> > >> final Quote quotePolicy, final Character commentStart, final Character
> > >> escape, final
> > >>                     boolean ignoreSurroundingSpaces, final boolean
> > >> ignoreEmptyLines, final String lineSeparator,
> > >>             final String[] header) {
> > >>         if (isLineBreak(delimiter)) {
> > >> @@ -213,39 +214,6 @@ public class CSVFormat implements Serial
> > >>     }
> > >>
> > >>     /**
> > >> -     * Verifies the consistency of the parameters and throws an
> > >> IllegalStateException if necessary.
> > >> -     *
> > >> -     * @throws IllegalStateException
> > >> -     */
> > >> -    void validate() throws IllegalStateException {
> > >> -        if (quoteChar != null && delimiter == quoteChar.charValue())
> {
> > >> -            throw new IllegalStateException("The quoteChar character
> > and
> > >> the delimiter cannot be the same ('" + quoteChar + "')");
> > >> -        }
> > >> -
> > >> -        if (escape != null && delimiter == escape.charValue()) {
> > >> -            throw new IllegalStateException("The escape character and
> > the
> > >> delimiter cannot be the same ('" + escape + "')");
> > >> -        }
> > >> -
> > >> -        if (commentStart != null && delimiter ==
> > >> commentStart.charValue()) {
> > >> -            throw new IllegalStateException("The comment start
> > character
> > >> and the delimiter cannot be the same ('" + commentStart +
> > >> -                    "')");
> > >> -        }
> > >> -
> > >> -        if (quoteChar != null && quoteChar.equals(commentStart)) {
> > >> -            throw new IllegalStateException("The comment start
> > character
> > >> and the quoteChar cannot be the same ('" + commentStart +
> > >> -                    "')");
> > >> -        }
> > >> -
> > >> -        if (escape != null && escape.equals(commentStart)) {
> > >> -            throw new IllegalStateException("The comment start and
> the
> > >> escape character cannot be the same ('" + commentStart + "')");
> > >> -        }
> > >> -
> > >> -        if (escape == null && quotePolicy == Quote.NONE) {
> > >> -            throw new IllegalStateException("No quotes mode set but
> no
> > >> escape character is set");
> > >> -        }
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Returns the character delimiting the values (typically ';', ','
> > or
> > >> '\t').
> > >>      *
> > >>      * @return the delimiter character
> > >> @@ -255,20 +223,6 @@ public class CSVFormat implements Serial
> > >>     }
> > >>
> > >>     /**
> > >> -     * Returns a copy of this format using the specified delimiter
> > >> character.
> > >> -     *
> > >> -     * @param delimiter
> > >> -     *            the delimiter character
> > >> -     * @return A copy of this format using the specified delimiter
> > >> character
> > >> -     * @throws IllegalArgumentException
> > >> -     *             thrown if the specified character is a line break
> > >> -     */
> > >> -    public CSVFormat withDelimiter(final char delimiter) {
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Returns the character used to encapsulate values containing
> > >> special characters.
> > >>      *
> > >>      * @return the quoteChar character
> > >> @@ -278,36 +232,6 @@ public class CSVFormat implements Serial
> > >>     }
> > >>
> > >>     /**
> > >> -     * Returns a copy of this format using the specified quoteChar
> > >> character.
> > >> -     *
> > >> -     * @param quoteChar
> > >> -     *            the quoteChar character
> > >> -     * @return A copy of this format using the specified quoteChar
> > >> character
> > >> -     * @throws IllegalArgumentException
> > >> -     *             thrown if the specified character is a line break
> > >> -     */
> > >> -    public CSVFormat withQuoteChar(final char quoteChar) {
> > >> -        return withQuoteChar(Character.valueOf(quoteChar));
> > >> -    }
> > >> -
> > >> -    /**
> > >> -     * Returns a copy of this format using the specified quoteChar
> > >> character.
> > >> -     *
> > >> -     * @param quoteChar
> > >> -     *            the quoteChar character
> > >> -     * @return A copy of this format using the specified quoteChar
> > >> character
> > >> -     * @throws IllegalArgumentException
> > >> -     *             thrown if the specified character is a line break
> > >> -     */
> > >> -    public CSVFormat withQuoteChar(final Character quoteChar) {
> > >> -        if (isLineBreak(quoteChar)) {
> > >> -            throw new IllegalArgumentException("The quoteChar cannot
> > be a
> > >> line break");
> > >> -        }
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Returns whether an quoteChar has been defined.
> > >>      *
> > >>      * @return {@code true} if an quoteChar is defined
> > >> @@ -326,40 +250,6 @@ public class CSVFormat implements Serial
> > >>     }
> > >>
> > >>     /**
> > >> -     * Returns a copy of this format using the specified character as
> > the
> > >> comment start marker.
> > >> -     *
> > >> -     * Note that the comment introducer character is only recognised
> at
> > >> the start of a line.
> > >> -     *
> > >> -     * @param commentStart
> > >> -     *            the comment start marker
> > >> -     * @return A copy of this format using the specified character as
> > the
> > >> comment start marker
> > >> -     * @throws IllegalArgumentException
> > >> -     *             thrown if the specified character is a line break
> > >> -     */
> > >> -    public CSVFormat withCommentStart(final char commentStart) {
> > >> -        return withCommentStart(Character.valueOf(commentStart));
> > >> -    }
> > >> -
> > >> -    /**
> > >> -     * Returns a copy of this format using the specified character as
> > the
> > >> comment start marker.
> > >> -     *
> > >> -     * Note that the comment introducer character is only recognised
> at
> > >> the start of a line.
> > >> -     *
> > >> -     * @param commentStart
> > >> -     *            the comment start marker
> > >> -     * @return A copy of this format using the specified character as
> > the
> > >> comment start marker
> > >> -     * @throws IllegalArgumentException
> > >> -     *             thrown if the specified character is a line break
> > >> -     */
> > >> -    public CSVFormat withCommentStart(final Character commentStart) {
> > >> -        if (isLineBreak(commentStart)) {
> > >> -            throw new IllegalArgumentException("The comment start
> > >> character cannot be a line break");
> > >> -        }
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Specifies whether comments are supported by this format.
> > >>      *
> > >>      * Note that the comment introducer character is only recognised
> at
> > >> the start of a line.
> > >> @@ -380,36 +270,6 @@ public class CSVFormat implements Serial
> > >>     }
> > >>
> > >>     /**
> > >> -     * Returns a copy of this format using the specified escape
> > character.
> > >> -     *
> > >> -     * @param escape
> > >> -     *            the escape character
> > >> -     * @return A copy of this format using the specified escape
> > character
> > >> -     * @throws IllegalArgumentException
> > >> -     *             thrown if the specified character is a line break
> > >> -     */
> > >> -    public CSVFormat withEscape(final char escape) {
> > >> -        return withEscape(Character.valueOf(escape));
> > >> -    }
> > >> -
> > >> -    /**
> > >> -     * Returns a copy of this format using the specified escape
> > character.
> > >> -     *
> > >> -     * @param escape
> > >> -     *            the escape character
> > >> -     * @return A copy of this format using the specified escape
> > character
> > >> -     * @throws IllegalArgumentException
> > >> -     *             thrown if the specified character is a line break
> > >> -     */
> > >> -    public CSVFormat withEscape(final Character escape) {
> > >> -        if (isLineBreak(escape)) {
> > >> -            throw new IllegalArgumentException("The escape character
> > >> cannot be a line break");
> > >> -        }
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Returns whether escape are being processed.
> > >>      *
> > >>      * @return {@code true} if escapes are processed
> > >> @@ -429,19 +289,6 @@ public class CSVFormat implements Serial
> > >>     }
> > >>
> > >>     /**
> > >> -     * Returns a copy of this format with the specified trimming
> > behavior.
> > >> -     *
> > >> -     * @param ignoreSurroundingSpaces
> > >> -     *            the trimming behavior, <tt>true</tt> to remove the
> > >> surrounding spaces, <tt>false</tt> to leave the
> > >> -     *            spaces as is.
> > >> -     * @return A copy of this format with the specified trimming
> > behavior.
> > >> -     */
> > >> -    public CSVFormat withIgnoreSurroundingSpaces(final boolean
> > >> ignoreSurroundingSpaces) {
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Specifies whether empty lines between records are ignored when
> > >> parsing input.
> > >>      *
> > >>      * @return <tt>true</tt> if empty lines between records are
> ignored,
> > >> <tt>false</tt> if they are turned into empty
> > >> @@ -452,19 +299,6 @@ public class CSVFormat implements Serial
> > >>     }
> > >>
> > >>     /**
> > >> -     * Returns a copy of this format with the specified empty line
> > >> skipping behavior.
> > >> -     *
> > >> -     * @param ignoreEmptyLines
> > >> -     *            the empty line skipping behavior, <tt>true</tt> to
> > >> ignore the empty lines between the records,
> > >> -     *            <tt>false</tt> to translate empty lines to empty
> > >> records.
> > >> -     * @return A copy of this format with the specified empty line
> > >> skipping behavior.
> > >> -     */
> > >> -    public CSVFormat withIgnoreEmptyLines(final boolean
> > ignoreEmptyLines)
> > >> {
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Returns the line separator delimiting output records.
> > >>      *
> > >>      * @return the line separator
> > >> @@ -473,74 +307,11 @@ public class CSVFormat implements Serial
> > >>         return recordSeparator;
> > >>     }
> > >>
> > >> -    /**
> > >> -     * Returns a copy of this format using the specified output
> record
> > >> separator.
> > >> -     *
> > >> -     * @param recordSeparator
> > >> -     *            the record separator to use for output.
> > >> -     *
> > >> -     * @return A copy of this format using the specified output
> record
> > >> separator
> > >> -     */
> > >> -    public CSVFormat withRecordSeparator(final char recordSeparator)
> {
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> String.valueOf(recordSeparator), header);
> > >> -    }
> > >> -
> > >> -    /**
> > >> -     * Returns a copy of this format using the specified output
> record
> > >> separator.
> > >> -     *
> > >> -     * @param recordSeparator
> > >> -     *            the record separator to use for output.
> > >> -     *
> > >> -     * @return A copy of this format using the specified output
> record
> > >> separator
> > >> -     */
> > >> -    public CSVFormat withRecordSeparator(final String
> recordSeparator)
> > {
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >> -     * Returns a copy of this format using the specified output quote
> > >> policy.
> > >> -     *
> > >> -     * @param quotePolicy
> > >> -     *            the quote policy to use for output.
> > >> -     *
> > >> -     * @return A copy of this format using the specified output line
> > >> separator
> > >> -     */
> > >> -    public CSVFormat withQuotePolicy(final Quote quotePolicy) {
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >>     String[] getHeader() {
> > >>         return header;
> > >>     }
> > >>
> > >>     /**
> > >> -     * Returns a copy of this format using the specified header. The
> > >> header can either be parsed automatically from the
> > >> -     * input file with:
> > >> -     *
> > >> -     * <pre>
> > >> -     * CSVFormat format = aformat.withHeader();
> > >> -     * </pre>
> > >> -     *
> > >> -     * or specified manually with:
> > >> -     *
> > >> -     * <pre>
> > >> -     * CSVFormat format = aformat.withHeader(&quot;name&quot;,
> > >> &quot;email&quot;, &quot;phone&quot;);
> > >> -     * </pre>
> > >> -     *
> > >> -     * @param header
> > >> -     *            the header, <tt>null</tt> if disabled, empty if
> > parsed
> > >> automatically, user specified otherwise.
> > >> -     *
> > >> -     * @return A copy of this format using the specified header
> > >> -     */
> > >> -    public CSVFormat withHeader(final String... header) {
> > >> -        return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> -                ignoreSurroundingSpaces, ignoreEmptyLines,
> > >> recordSeparator, header);
> > >> -    }
> > >> -
> > >> -    /**
> > >>      * Parses the specified content.
> > >>      *
> > >>      * @param in
> > >> @@ -600,5 +371,307 @@ public class CSVFormat implements Serial
> > >>     public Quote getQuotePolicy() {
> > >>         return quotePolicy;
> > >>     }
> > >> +
> > >> +    public static class CSVFormatBuilder {
> > >>
> > >> +        private char delimiter;
> > >> +        private Character quoteChar;
> > >> +        private Quote quotePolicy;
> > >> +        private Character commentStart;
> > >> +        private Character escape;
> > >> +        private boolean ignoreSurroundingSpaces; // Should
> > >> leading/trailing spaces be ignored around values?
> > >> +        private boolean ignoreEmptyLines;
> > >> +        private String recordSeparator; // for outputs
> > >> +        private String[] header;
> > >> +
> > >> +        /**
> > >> +         * Creates a customized CSV format.
> > >> +         *
> > >> +         * @param delimiter
> > >> +         *            the char used for value separation, must not
> be a
> > >> line break character
> > >> +         * @param quoteChar
> > >> +         *            the char used as value encapsulation marker
> > >> +         * @param quotePolicy
> > >> +         *            the quote policy
> > >> +         * @param commentStart
> > >> +         *            the char used for comment identification
> > >> +         * @param escape
> > >> +         *            the char used to escape special characters in
> > values
> > >> +         * @param ignoreSurroundingSpaces
> > >> +         *            <tt>true</tt> when whitespaces enclosing values
> > >> should be ignored
> > >> +         * @param ignoreEmptyLines
> > >> +         *            <tt>true</tt> when the parser should skip empty
> > >> lines
> > >> +         * @param recordSeparator
> > >> +         *            the line separator to use for output
> > >> +         * @param header
> > >> +         *            the header
> > >> +         * @throws IllegalArgumentException if the delimiter is a
> line
> > >> break character
> > >> +         */
> > >> +        // package protected for use by test code
> > >> +        CSVFormatBuilder(final char delimiter, final Character
> > quoteChar,
> > >> final Quote quotePolicy, final Character commentStart, final Character
> > >> escape, final
> > >> +                        boolean ignoreSurroundingSpaces, final
> boolean
> > >> ignoreEmptyLines, final String lineSeparator,
> > >> +                final String[] header) {
> > >> +            if (isLineBreak(delimiter)) {
> > >> +                throw new IllegalArgumentException("The delimiter
> > cannot
> > >> be a line break");
> > >> +            }
> > >> +            this.delimiter = delimiter;
> > >> +            this.quoteChar = quoteChar;
> > >> +            this.quotePolicy = quotePolicy;
> > >> +            this.commentStart = commentStart;
> > >> +            this.escape = escape;
> > >> +            this.ignoreSurroundingSpaces = ignoreSurroundingSpaces;
> > >> +            this.ignoreEmptyLines = ignoreEmptyLines;
> > >> +            this.recordSeparator = lineSeparator;
> > >> +            this.header = header;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Creates a basic CSVFormatBuilder.
> > >> +         *
> > >> +         * @param delimiter
> > >> +         *            the char used for value separation, must not
> be a
> > >> line break character
> > >> +         * @throws IllegalArgumentException if the delimiter is a
> line
> > >> break character
> > >> +         */
> > >> +        private CSVFormatBuilder(char delimiter){
> > >> +            this(delimiter, null, null, null, null, false, false,
> null,
> > >> null);
> > >> +        }
> > >> +
> > >> +        public CSVFormat build() {
> > >> +            validate();
> > >> +            return new CSVFormat(delimiter, quoteChar, quotePolicy,
> > >> commentStart, escape,
> > >> +                                 ignoreSurroundingSpaces,
> > >> ignoreEmptyLines, recordSeparator, header);
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Verifies the consistency of the parameters and throws an
> > >> IllegalStateException if necessary.
> > >> +         *
> > >> +         * @throws IllegalStateException
> > >> +         */
> > >> +        private void validate() throws IllegalStateException {
> > >> +            if (quoteChar != null && delimiter ==
> > quoteChar.charValue()) {
> > >> +                throw new IllegalStateException("The quoteChar
> > character
> > >> and the delimiter cannot be the same ('" + quoteChar + "')");
> > >> +            }
> > >> +
> > >> +            if (escape != null && delimiter == escape.charValue()) {
> > >> +                throw new IllegalStateException("The escape character
> > and
> > >> the delimiter cannot be the same ('" + escape + "')");
> > >> +            }
> > >> +
> > >> +            if (commentStart != null && delimiter ==
> > >> commentStart.charValue()) {
> > >> +                throw new IllegalStateException("The comment start
> > >> character and the delimiter cannot be the same ('" + commentStart +
> > >> +                        "')");
> > >> +            }
> > >> +
> > >> +            if (quoteChar != null && quoteChar.equals(commentStart))
> {
> > >> +                throw new IllegalStateException("The comment start
> > >> character and the quoteChar cannot be the same ('" + commentStart +
> > >> +                        "')");
> > >> +            }
> > >> +
> > >> +            if (escape != null && escape.equals(commentStart)) {
> > >> +                throw new IllegalStateException("The comment start
> and
> > >> the escape character cannot be the same ('" + commentStart + "')");
> > >> +            }
> > >> +
> > >> +            if (escape == null && quotePolicy == Quote.NONE) {
> > >> +                throw new IllegalStateException("No quotes mode set
> but
> > >> no escape character is set");
> > >> +            }
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the delimiter of the format to the specified
> character.
> > >> +         *
> > >> +         * @param delimiter
> > >> +         *            the delimiter character
> > >> +         * @return This builder with the specified character as
> > delimiter
> > >> +         * @throws IllegalArgumentException
> > >> +         *             thrown if the specified character is a line
> > break
> > >> +         */
> > >> +        public CSVFormatBuilder withDelimiter(final char delimiter) {
> > >> +            if (isLineBreak(delimiter)) {
> > >> +                throw new IllegalArgumentException("The delimiter
> > cannot
> > >> be a line break");
> > >> +            }
> > >> +            this.delimiter = delimiter;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the quoteChar of the format to the specified
> character.
> > >> +         *
> > >> +         * @param quoteChar
> > >> +         *            the quoteChar character
> > >> +         * @return This builder with the specified character as
> > quoteChar
> > >> +         * @throws IllegalArgumentException
> > >> +         *             thrown if the specified character is a line
> > break
> > >> +         */
> > >> +        public CSVFormatBuilder withQuoteChar(final char quoteChar) {
> > >> +            return withQuoteChar(Character.valueOf(quoteChar));
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the quoteChar of the format to the specified
> character.
> > >> +         *
> > >> +         * @param quoteChar
> > >> +         *            the quoteChar character
> > >> +         * @return This builder with the specified character as
> > quoteChar
> > >> +         * @throws IllegalArgumentException
> > >> +         *             thrown if the specified character is a line
> > break
> > >> +         */
> > >> +        public CSVFormatBuilder withQuoteChar(final Character
> > quoteChar) {
> > >> +            if (isLineBreak(quoteChar)) {
> > >> +                throw new IllegalArgumentException("The quoteChar
> > cannot
> > >> be a line break");
> > >> +            }
> > >> +            this.quoteChar = quoteChar;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the comment start marker of the format to the
> specified
> > >> character.
> > >> +         *
> > >> +         * Note that the comment introducer character is only
> > recognised
> > >> at the start of a line.
> > >> +         *
> > >> +         * @param commentStart
> > >> +         *            the comment start marker
> > >> +         * @return This builder with the specified character as the
> > >> comment start marker
> > >> +         * @throws IllegalArgumentException
> > >> +         *             thrown if the specified character is a line
> > break
> > >> +         */
> > >> +        public CSVFormatBuilder withCommentStart(final char
> > commentStart)
> > >> {
> > >> +            return withCommentStart(Character.valueOf(commentStart));
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the comment start marker of the format to the
> specified
> > >> character.
> > >> +         *
> > >> +         * Note that the comment introducer character is only
> > recognised
> > >> at the start of a line.
> > >> +         *
> > >> +         * @param commentStart
> > >> +         *            the comment start marker
> > >> +         * @return This builder with the specified character as the
> > >> comment start marker
> > >> +         * @throws IllegalArgumentException
> > >> +         *             thrown if the specified character is a line
> > break
> > >> +         */
> > >> +        public CSVFormatBuilder withCommentStart(final Character
> > >> commentStart) {
> > >> +            if (isLineBreak(commentStart)) {
> > >> +                throw new IllegalArgumentException("The comment start
> > >> character cannot be a line break");
> > >> +            }
> > >> +            this.commentStart = commentStart;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the escape character of the format to the specified
> > >> character.
> > >> +         *
> > >> +         * @param escape
> > >> +         *            the escape character
> > >> +         * @return This builder with the specified character as the
> > >> escape character
> > >> +         * @throws IllegalArgumentException
> > >> +         *             thrown if the specified character is a line
> > break
> > >> +         */
> > >> +        public CSVFormatBuilder withEscape(final char escape) {
> > >> +            return withEscape(Character.valueOf(escape));
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the escape character of the format to the specified
> > >> character.
> > >> +         *
> > >> +         * @param escape
> > >> +         *            the escape character
> > >> +         * @return This builder with the specified character as the
> > >> escape character
> > >> +         * @throws IllegalArgumentException
> > >> +         *             thrown if the specified character is a line
> > break
> > >> +         */
> > >> +        public CSVFormatBuilder withEscape(final Character escape) {
> > >> +            if (isLineBreak(escape)) {
> > >> +                throw new IllegalArgumentException("The escape
> > character
> > >> cannot be a line break");
> > >> +            }
> > >> +            this.escape = escape;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the header of the format. The header can either be
> > parsed
> > >> automatically from the
> > >> +         * input file with:
> > >> +         *
> > >> +         * <pre>
> > >> +         * CSVFormat format = aformat.withHeader();
> > >> +         * </pre>
> > >> +         *
> > >> +         * or specified manually with:
> > >> +         *
> > >> +         * <pre>
> > >> +         * CSVFormat format = aformat.withHeader(&quot;name&quot;,
> > >> &quot;email&quot;, &quot;phone&quot;);
> > >> +         * </pre>
> > >> +         *
> > >> +         * @param header
> > >> +         *            the header, <tt>null</tt> if disabled, empty if
> > >> parsed automatically, user specified otherwise.
> > >> +         *
> > >> +         * @return This builder with the specified header
> > >> +         */
> > >> +        public CSVFormatBuilder withHeader(final String... header) {
> > >> +            this.header = header;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the trimming behavior of the format.
> > >> +         *
> > >> +         * @param ignoreSurroundingSpaces
> > >> +         *            the trimming behavior, <tt>true</tt> to remove
> > the
> > >> surrounding spaces, <tt>false</tt> to leave the
> > >> +         *            spaces as is.
> > >> +         * @return This builder with the specified trimming behavior.
> > >> +         */
> > >> +        public CSVFormatBuilder withIgnoreSurroundingSpaces(final
> > boolean
> > >> ignoreSurroundingSpaces) {
> > >> +            this.ignoreSurroundingSpaces = ignoreSurroundingSpaces;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the empty line skipping behavior of the format.
> > >> +         *
> > >> +         * @param ignoreEmptyLines
> > >> +         *            the empty line skipping behavior, <tt>true</tt>
> > to
> > >> ignore the empty lines between the records,
> > >> +         *            <tt>false</tt> to translate empty lines to
> empty
> > >> records.
> > >> +         * @return This builder with the specified empty line
> skipping
> > >> behavior.
> > >> +         */
> > >> +        public CSVFormatBuilder withIgnoreEmptyLines(final boolean
> > >> ignoreEmptyLines) {
> > >> +            this.ignoreEmptyLines = ignoreEmptyLines;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the record separator of the format to the specified
> > >> character.
> > >> +         *
> > >> +         * @param recordSeparator
> > >> +         *            the record separator to use for output.
> > >> +         *
> > >> +         * @return This builder with the the specified output record
> > >> separator
> > >> +         */
> > >> +        public CSVFormatBuilder withRecordSeparator(final char
> > >> recordSeparator) {
> > >> +            return
> > withRecordSeparator(String.valueOf(recordSeparator));
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the record separator of the format to the specified
> > >> String.
> > >> +         *
> > >> +         * @param recordSeparator
> > >> +         *            the record separator to use for output.
> > >> +         *
> > >> +         * @return This builder with the the specified output record
> > >> separator
> > >> +         */
> > >> +        public CSVFormatBuilder withRecordSeparator(final String
> > >> recordSeparator) {
> > >> +            this.recordSeparator = recordSeparator;
> > >> +            return this;
> > >> +        }
> > >> +
> > >> +        /**
> > >> +         * Sets the output quote policy of the format to the
> specified
> > >> value.
> > >> +         *
> > >> +         * @param quotePolicy
> > >> +         *            the quote policy to use for output.
> > >> +         *
> > >> +         * @return This builder with the specified quote policy
> > >> +         */
> > >> +        public CSVFormatBuilder withQuotePolicy(final Quote
> > quotePolicy) {
> > >> +            this.quotePolicy = quotePolicy;
> > >> +            return this;
> > >> +        }
> > >> +    }
> > >> }
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -103,7 +103,6 @@ public class CSVParser implements Iterab
> > >>      *             thrown if the parameters of the format are
> > inconsistent
> > >>      */
> > >>     public CSVParser(final Reader input, final CSVFormat format)
> throws
> > >> IOException {
> > >> -        format.validate();
> > >>         this.lexer = new CSVLexer(format, new
> > >> ExtendedBufferedReader(input));
> > >>         this.headerMap = initializeHeader(format);
> > >>     }
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -59,7 +59,6 @@ public class CSVPrinter implements Flush
> > >>     public CSVPrinter(final Appendable out, final CSVFormat format) {
> > >>         this.out = out;
> > >>         this.format = format == null ? CSVFormat.DEFAULT : format;
> > >> -        this.format.validate();
> > >>     }
> > >>
> > >>     // ======================================================
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFileParserTest.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFileParserTest.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFileParserTest.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFileParserTest.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -32,6 +32,7 @@ import java.util.ArrayList;
> > >> import java.util.Collection;
> > >> import java.util.List;
> > >>
> > >> +import org.apache.commons.csv.CSVFormat.CSVFormatBuilder;
> > >> import org.junit.Test;
> > >> import org.junit.runner.RunWith;
> > >> import org.junit.runners.Parameterized;
> > >> @@ -89,17 +90,18 @@ public class CSVFileParserTest {
> > >>         assertTrue(testName+" require 1 param", split.length >= 1);
> > >>          // first line starts with csv data file name
> > >>         final BufferedReader csvFile = new BufferedReader(new
> > >> FileReader(new File(BASE, split[0])));
> > >> -        CSVFormat fmt = new CSVFormat(',').withQuoteChar('"');
> > >> +        CSVFormatBuilder builder =
> > >> CSVFormat.newFormat(',').withQuoteChar('"');
> > >> +        CSVFormat fmt = builder.build();
> > >>         boolean checkComments = false;
> > >>         for(int i=1; i < split.length; i++) {
> > >>             final String option = split[i];
> > >>             final String[] option_parts = option.split("=",2);
> > >>             if ("IgnoreEmpty".equalsIgnoreCase(option_parts[0])){
> > >> -                fmt =
> > >> fmt.withIgnoreEmptyLines(Boolean.parseBoolean(option_parts[1]));
> > >> +                fmt =
> > >>
> >
> builder.withIgnoreEmptyLines(Boolean.parseBoolean(option_parts[1])).build();
> > >>             } else if
> > ("IgnoreSpaces".equalsIgnoreCase(option_parts[0])) {
> > >> -                fmt =
> > >>
> fmt.withIgnoreSurroundingSpaces(Boolean.parseBoolean(option_parts[1]));
> > >> +                fmt =
> > >>
> >
> builder.withIgnoreSurroundingSpaces(Boolean.parseBoolean(option_parts[1])).build();
> > >>             } else if
> > ("CommentStart".equalsIgnoreCase(option_parts[0])) {
> > >> -                fmt =
> fmt.withCommentStart(option_parts[1].charAt(0));
> > >> +                fmt =
> > >> builder.withCommentStart(option_parts[1].charAt(0)).build();
> > >>             } else if
> > ("CheckComments".equalsIgnoreCase(option_parts[0]))
> > >> {
> > >>                 checkComments = true;
> > >>             } else {
> > >>
> > >> Added:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatBuilderTest.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatBuilderTest.java?rev=1409449&view=auto
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatBuilderTest.java
> > >> (added)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatBuilderTest.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -0,0 +1,152 @@
> > >> +/*
> > >> + * Licensed to the Apache Software Foundation (ASF) under one or more
> > >> + * contributor license agreements.  See the NOTICE file distributed
> > with
> > >> + * this work for additional information regarding copyright
> ownership.
> > >> + * The ASF licenses this file to You under the Apache License,
> Version
> > 2.0
> > >> + * (the "License"); you may not use this file except in compliance
> with
> > >> + * the License.  You may obtain a copy of the License at
> > >> + *
> > >> + *      http://www.apache.org/licenses/LICENSE-2.0
> > >> + *
> > >> + * Unless required by applicable law or agreed to in writing,
> software
> > >> + * distributed under the License is distributed on an "AS IS" BASIS,
> > >> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> > >> implied.
> > >> + * See the License for the specific language governing permissions
> and
> > >> + * limitations under the License.
> > >> + */
> > >> +
> > >> +package org.apache.commons.csv;
> > >> +
> > >> +import static org.apache.commons.csv.Constants.*;
> > >> +import static org.junit.Assert.*;
> > >> +
> > >> +import org.apache.commons.csv.CSVFormat.CSVFormatBuilder;
> > >> +import org.junit.Before;
> > >> +import org.junit.Test;
> > >> +
> > >> +/**
> > >> + *
> > >> + *
> > >> + * @version $Id$
> > >> + */
> > >> +public class CSVFormatBuilderTest {
> > >> +
> > >> +    private CSVFormatBuilder builder;
> > >> +
> > >> +    @Before
> > >> +    public void setUp() throws Exception {
> > >> +        builder = new CSVFormatBuilder('+', '!', null, '#', '!',
> true,
> > >> true, CRLF, null);
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testDelimiter() {
> > >> +        assertEquals('?',
> > >> builder.withDelimiter('?').build().getDelimiter());
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalArgumentException.class)
> > >> +    public void testNewFormatLFThrowsException() {
> > >> +        CSVFormat.newFormat(LF);
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalArgumentException.class)
> > >> +    public void testNewFormatCRThrowsException() {
> > >> +        CSVFormat.newFormat(CR);
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalArgumentException.class)
> > >> +    public void testWithDelimiterLFThrowsException() {
> > >> +        builder.withDelimiter(LF).build();
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void testDelimiterSameAsEscapeThrowsException() {
> > >> +        builder.withDelimiter('!').withEscape('!').build();
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void testDelimiterSameAsCommentStartThrowsException() {
> > >> +        builder.withDelimiter('!').withCommentStart('!').build();
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testQuoteChar() {
> > >> +        assertEquals('?',
> > >> builder.withQuoteChar('?').build().getQuoteChar().charValue());
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void testQuoteCharSameAsCommentStartThrowsException() {
> > >> +        builder.withQuoteChar('!').withCommentStart('!').build();
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void
> > >> testQuoteCharSameAsCommentStartThrowsExceptionForWrapperType() {
> > >> +        // Cannot assume that callers won't use different Character
> > >> objects
> > >> +        builder.withQuoteChar(new
> > >> Character('!')).withCommentStart('!').build();
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void testQuoteCharSameAsDelimiterThrowsException() {
> > >> +        builder.withQuoteChar('!').withDelimiter('!').build();
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalArgumentException.class)
> > >> +    public void testWithQuoteLFThrowsException() {
> > >> +        builder.withQuoteChar(LF).build();
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testQuotePolicy() {
> > >> +        assertEquals(Quote.ALL,
> > >> builder.withQuotePolicy(Quote.ALL).build().getQuotePolicy());
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void testQuotePolicyNoneWithoutEscapeThrowsException() {
> > >> +        CSVFormat.newFormat('!').withQuotePolicy(Quote.NONE).build();
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testCommentStart() {
> > >> +        assertEquals('?',
> > >> builder.withCommentStart('?').build().getCommentStart().charValue());
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalArgumentException.class)
> > >> +    public void testWithCommentStartCRThrowsException() {
> > >> +        builder.withCommentStart(CR).build();
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testRecoardSeparator() {
> > >> +        assertEquals("?",
> > >> builder.withRecordSeparator("?").build().getRecordSeparator());
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testEscape() {
> > >> +        assertEquals('?',
> > >> builder.withEscape('?').build().getEscape().charValue());
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalArgumentException.class)
> > >> +    public void testWithEscapeCRThrowsExceptions() {
> > >> +        builder.withEscape(CR).build();
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void testEscapeSameAsCommentStartThrowsException() {
> > >> +        builder.withEscape('!').withCommentStart('!').build();
> > >> +    }
> > >> +
> > >> +    @Test(expected = IllegalStateException.class)
> > >> +    public void
> > >> testEscapeSameAsCommentStartThrowsExceptionForWrapperType() {
> > >> +        // Cannot assume that callers won't use different Character
> > >> objects
> > >> +        builder.withEscape(new Character('!')).withCommentStart(new
> > >> Character('!')).build();
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testIgnoreSurroundingSpaces() {
> > >> +
> > >>
> >
> assertFalse(builder.withIgnoreSurroundingSpaces(false).build().getIgnoreSurroundingSpaces());
> > >> +    }
> > >> +
> > >> +    @Test
> > >> +    public void testIgnoreEmptyLines() {
> > >> +
> > >>
> >
> assertFalse(builder.withIgnoreEmptyLines(false).build().getIgnoreEmptyLines());
> > >> +    }
> > >> +}
> > >>
> > >> Propchange:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatBuilderTest.java
> > >>
> > >>
> >
> ------------------------------------------------------------------------------
> > >>    svn:eol-style = native
> > >>
> > >> Propchange:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatBuilderTest.java
> > >>
> > >>
> >
> ------------------------------------------------------------------------------
> > >>    svn:keywords = Id
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -29,6 +29,7 @@ import java.io.ByteArrayOutputStream;
> > >> import java.io.ObjectInputStream;
> > >> import java.io.ObjectOutputStream;
> > >>
> > >> +import org.apache.commons.csv.CSVFormat.CSVFormatBuilder;
> > >> import org.junit.Test;
> > >>
> > >> /**
> > >> @@ -39,46 +40,6 @@ import org.junit.Test;
> > >> public class CSVFormatTest {
> > >>
> > >>     @Test
> > >> -    public void testImmutalibity() {
> > >> -        final CSVFormat format = new CSVFormat('!', '!',
> Quote.MINIMAL,
> > >> '!', '!', true, true, CRLF, null);
> > >> -
> > >> -        format.withDelimiter('?');
> > >> -        format.withQuoteChar('?');
> > >> -        format.withQuotePolicy(Quote.ALL);
> > >> -        format.withCommentStart('?');
> > >> -        format.withRecordSeparator("?");
> > >> -        format.withEscape('?');
> > >> -        format.withIgnoreSurroundingSpaces(false);
> > >> -        format.withIgnoreEmptyLines(false);
> > >> -
> > >> -        assertEquals('!', format.getDelimiter());
> > >> -        assertEquals('!', format.getQuoteChar().charValue());
> > >> -        assertEquals('!', format.getCommentStart().charValue());
> > >> -        assertEquals('!', format.getEscape().charValue());
> > >> -        assertEquals(CRLF, format.getRecordSeparator());
> > >> -
> > >> -        assertTrue(format.getIgnoreSurroundingSpaces());
> > >> -        assertTrue(format.getIgnoreEmptyLines());
> > >> -
> > >> -        assertEquals(Quote.MINIMAL, format.getQuotePolicy());
> > >> -    }
> > >> -
> > >> -    @Test
> > >> -    public void testMutators() {
> > >> -        final CSVFormat format = new CSVFormat('!', '!', null, '!',
> > '!',
> > >> true, true, CRLF, null);
> > >> -
> > >> -        assertEquals('?', format.withDelimiter('?').getDelimiter());
> > >> -        assertEquals('?',
> > >> format.withQuoteChar('?').getQuoteChar().charValue());
> > >> -        assertEquals(Quote.ALL,
> > >> format.withQuotePolicy(Quote.ALL).getQuotePolicy());
> > >> -        assertEquals('?',
> > >> format.withCommentStart('?').getCommentStart().charValue());
> > >> -        assertEquals("?",
> > >> format.withRecordSeparator("?").getRecordSeparator());
> > >> -        assertEquals('?',
> > format.withEscape('?').getEscape().charValue());
> > >> -
> > >> -
> > >>
> >
> assertFalse(format.withIgnoreSurroundingSpaces(false).getIgnoreSurroundingSpaces());
> > >> -
> > >> assertFalse(format.withIgnoreEmptyLines(false).getIgnoreEmptyLines());
> > >> -    }
> > >> -
> > >> -    @Test
> > >>     public void testFormat() {
> > >>         final CSVFormat format = CSVFormat.DEFAULT;
> > >>
> > >> @@ -87,116 +48,6 @@ public class CSVFormatTest {
> > >>         assertEquals("\"x,y\",z", format.format("x,y", "z"));
> > >>     }
> > >>
> > >> -    @Test
> > >> -    public void testValidation() {
> > >> -        try {
> > >> -            new CSVFormat('\n');
> > >> -            fail();
> > >> -        } catch (final IllegalArgumentException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -            new CSVFormat('\r');
> > >> -            fail();
> > >> -        } catch (final IllegalArgumentException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        final CSVFormat format = CSVFormat.DEFAULT;
> > >> -
> > >> -        try {
> > >> -            format.withDelimiter('\n');
> > >> -            fail();
> > >> -        } catch (final IllegalArgumentException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -            format.withEscape('\r');
> > >> -            fail();
> > >> -        } catch (final IllegalArgumentException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -            format.withQuoteChar('\n');
> > >> -            fail();
> > >> -        } catch (final IllegalArgumentException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -            format.withCommentStart('\r');
> > >> -            fail();
> > >> -        } catch (final IllegalArgumentException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -            format.withDelimiter('!').withEscape('!').validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -
>  format.withDelimiter('!').withCommentStart('!').validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -
>  format.withQuoteChar('!').withCommentStart('!').validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        // Cannot assume that callers won't use different Character
> > >> objects
> > >> -        try {
> > >> -            format.withQuoteChar(new
> > >> Character('!')).withCommentStart('!').validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        format.withQuoteChar(null).withCommentStart(null).validate();
> > >> -
> > >> -        try {
> > >> -            format.withEscape('!').withCommentStart('!').validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        // Cannot assume that callers won't use different Character
> > >> objects
> > >> -        try {
> > >> -            format.withEscape(new
> Character('!')).withCommentStart(new
> > >> Character('!')).validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        format.withEscape(null).withCommentStart(null).validate();
> > >> -
> > >> -
> > >> -        try {
> > >> -            format.withQuoteChar('!').withDelimiter('!').validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -
> > >> -        try {
> > >> -
> > >> format.withQuoteChar('!').withQuotePolicy(Quote.NONE).validate();
> > >> -            fail();
> > >> -        } catch (final IllegalStateException e) {
> > >> -            // expected
> > >> -        }
> > >> -    }
> > >> -
> > >>     @SuppressWarnings("boxing") // no need to worry about boxing here
> > >>     @Test
> > >>     public void testSerialization() throws Exception {
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexerTest.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexerTest.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexerTest.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVLexerTest.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -51,7 +51,7 @@ public class CSVLexerTest {
> > >>     @Test
> > >>     public void testNextToken1() throws IOException {
> > >>         final String code = "abc,def, hijk,  lmnop,   qrst,uv ,wxy
> ,z
> > ,
> > >> ,";
> > >> -        final Lexer parser = getLexer(code,
> > >> CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(true));
> > >> +        final Lexer parser = getLexer(code,
> > >> CSVFormat.defaults().withIgnoreSurroundingSpaces(true).build());
> > >>         assertTokenEquals(TOKEN, "abc", parser.nextToken(new
> Token()));
> > >>         assertTokenEquals(TOKEN, "def", parser.nextToken(new
> Token()));
> > >>         assertTokenEquals(TOKEN, "hijk", parser.nextToken(new
> Token()));
> > >> @@ -83,7 +83,7 @@ public class CSVLexerTest {
> > >>                 "\n"+
> > >>                 "\n"+
> > >>                 "# Final comment\n";       // 7
> > >> -        final CSVFormat format =
> > CSVFormat.DEFAULT.withCommentStart('#');
> > >> +        final CSVFormat format =
> > >> CSVFormat.defaults().withCommentStart('#').build();
> > >>         assertTrue("Should ignore empty lines",
> > >> format.getIgnoreEmptyLines());
> > >>
> > >>         final Lexer parser = getLexer(code, format);
> > >> @@ -126,7 +126,7 @@ public class CSVLexerTest {
> > >>                 "\n"+                      // 6b
> > >>                 "\n"+                      // 6c
> > >>                 "# Final comment\n";       // 7
> > >> -        final CSVFormat format =
> > >> CSVFormat.DEFAULT.withCommentStart('#').withIgnoreEmptyLines(false);
> > >> +        final CSVFormat format =
> > >>
> >
> CSVFormat.defaults().withCommentStart('#').withIgnoreEmptyLines(false).build();
> > >>         assertFalse("Should not ignore empty lines",
> > >> format.getIgnoreEmptyLines());
> > >>
> > >>         final Lexer parser = getLexer(code, format);
> > >> @@ -187,7 +187,7 @@ public class CSVLexerTest {
> > >>         *       \,,
> > >>         */
> > >>         final String code = "a,\\,,b\\\\\n\\,,\\\nc,d\\\r\ne";
> > >> -        final CSVFormat format =
> > >> CSVFormat.DEFAULT.withEscape('\\').withIgnoreEmptyLines(false);
> > >> +        final CSVFormat format =
> > >>
> >
> CSVFormat.defaults().withEscape('\\').withIgnoreEmptyLines(false).build();
> > >>         assertTrue(format.isEscaping());
> > >>         final Lexer parser = getLexer(code, format);
> > >>
> > >> @@ -204,7 +204,7 @@ public class CSVLexerTest {
> > >>     @Test
> > >>     public void testNextToken3BadEscaping() throws IOException {
> > >>         final String code = "a,b,c\\";
> > >> -        final CSVFormat format = CSVFormat.DEFAULT.withEscape('\\');
> > >> +        final CSVFormat format =
> > >> CSVFormat.defaults().withEscape('\\').build();
> > >>         assertTrue(format.isEscaping());
> > >>         final Lexer parser = getLexer(code, format);
> > >>
> > >> @@ -226,7 +226,7 @@ public class CSVLexerTest {
> > >>         *        a,  " foo " ,b
> > >>         */
> > >>         final String code = "a,\"foo\",b\na,   \" foo\",b\na,\"foo \"
> > >> ,b\na,  \" foo \"  ,b";
> > >> -        final Lexer parser = getLexer(code,
> > >> CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(true));
> > >> +        final Lexer parser = getLexer(code,
> > >> CSVFormat.defaults().withIgnoreSurroundingSpaces(true).build());
> > >>         assertTokenEquals(TOKEN, "a", parser.nextToken(new Token()));
> > >>         assertTokenEquals(TOKEN, "foo", parser.nextToken(new
> Token()));
> > >>         assertTokenEquals(EORECORD, "b", parser.nextToken(new
> Token()));
> > >> @@ -264,7 +264,7 @@ public class CSVLexerTest {
> > >>         *       ;;
> > >>         */
> > >>         final String code = "a;'b and '' more\n'\n!comment;;;;\n;;";
> > >> -        final CSVFormat format =
> > >>
> >
> CSVFormat.DEFAULT.withDelimiter(';').withQuoteChar('\'').withCommentStart('!');
> > >> +        final CSVFormat format =
> > >>
> >
> CSVFormat.defaults().withDelimiter(';').withQuoteChar('\'').withCommentStart('!').build();
> > >>         final Lexer parser = getLexer(code, format);
> > >>         assertTokenEquals(TOKEN, "a", parser.nextToken(new Token()));
> > >>         assertTokenEquals(EORECORD, "b and ' more\n",
> > >> parser.nextToken(new Token()));
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVParserTest.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -71,7 +71,7 @@ public class CSVParserTest {
> > >>
> > >>     @Test
> > >>     public void testGetLine() throws IOException {
> > >> -        final CSVParser parser = new CSVParser(new
> > >> StringReader(CSVINPUT),
> > >> CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(true));
> > >> +        final CSVParser parser = new CSVParser(new
> > >> StringReader(CSVINPUT),
> > >> CSVFormat.defaults().withIgnoreSurroundingSpaces(true).build());
> > >>         for (final String[] re : RESULT) {
> > >>             assertArrayEquals(re, parser.nextRecord().values());
> > >>         }
> > >> @@ -81,7 +81,7 @@ public class CSVParserTest {
> > >>
> > >>     @Test
> > >>     public void testGetRecords() throws IOException {
> > >> -        final CSVParser parser = new CSVParser(new
> > >> StringReader(CSVINPUT),
> > >> CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(true));
> > >> +        final CSVParser parser = new CSVParser(new
> > >> StringReader(CSVINPUT),
> > >> CSVFormat.defaults().withIgnoreSurroundingSpaces(true).build());
> > >>         final List<CSVRecord> records = parser.getRecords();
> > >>         assertEquals(RESULT.length, records.size());
> > >>         assertTrue(records.size() > 0);
> > >> @@ -312,8 +312,8 @@ public class CSVParserTest {
> > >>         };
> > >>
> > >>
> > >> -        final CSVFormat format = new
> > >> CSVFormat(',').withQuoteChar('\'').withEscape('/')
> > >> -
> > >> .withIgnoreEmptyLines(true).withRecordSeparator(CRLF);
> > >> +        final CSVFormat format =
> > >> CSVFormat.newFormat(',').withQuoteChar('\'').withEscape('/')
> > >> +
> > >> .withIgnoreEmptyLines(true).withRecordSeparator(CRLF).build();
> > >>
> > >>         final CSVParser parser = new CSVParser(code, format);
> > >>         final List<CSVRecord> records = parser.getRecords();
> > >> @@ -342,8 +342,8 @@ public class CSVParserTest {
> > >>         };
> > >>
> > >>
> > >> -        final CSVFormat format = new CSVFormat(',').withEscape('/')
> > >> -
>  .withIgnoreEmptyLines(true).withRecordSeparator(CRLF);
> > >> +        final CSVFormat format =
> > CSVFormat.newFormat(',').withEscape('/')
> > >> +
> > >> .withIgnoreEmptyLines(true).withRecordSeparator(CRLF).build();
> > >>
> > >>         final CSVParser parser = new CSVParser(code, format);
> > >>         final List<CSVRecord> records = parser.getRecords();
> > >> @@ -381,7 +381,7 @@ public class CSVParserTest {
> > >>                 {"\n", " ", "#"},
> > >>         };
> > >>
> > >> -        format = CSVFormat.DEFAULT.withCommentStart('#');
> > >> +        format = CSVFormat.defaults().withCommentStart('#').build();
> > >>         parser = new CSVParser(code, format);
> > >>         records = parser.getRecords();
> > >>
> > >> @@ -481,7 +481,7 @@ public class CSVParserTest {
> > >>     public void testHeader() throws Exception {
> > >>         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
> > >>
> > >> -        final Iterator<CSVRecord> records =
> > >> CSVFormat.DEFAULT.withHeader().parse(in).iterator();
> > >> +        final Iterator<CSVRecord> records =
> > >> CSVFormat.defaults().withHeader().build().parse(in).iterator();
> > >>
> > >>         for (int i = 0; i < 2; i++) {
> > >>             assertTrue(records.hasNext());
> > >> @@ -498,7 +498,7 @@ public class CSVParserTest {
> > >>     public void testHeaderComment() throws Exception {
> > >>         final Reader in = new StringReader("#
> > >> comment\na,b,c\n1,2,3\nx,y,z");
> > >>
> > >> -        final Iterator<CSVRecord> records =
> > >>
> >
> CSVFormat.DEFAULT.withCommentStart('#').withHeader().parse(in).iterator();
> > >> +        final Iterator<CSVRecord> records =
> > >>
> >
> CSVFormat.defaults().withCommentStart('#').withHeader().build().parse(in).iterator();
> > >>
> > >>         for (int i = 0; i < 2; i++) {
> > >>             assertTrue(records.hasNext());
> > >> @@ -515,7 +515,7 @@ public class CSVParserTest {
> > >>     public void testProvidedHeader() throws Exception {
> > >>         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
> > >>
> > >> -        final Iterator<CSVRecord> records =
> > >> CSVFormat.DEFAULT.withHeader("A", "B", "C").parse(in).iterator();
> > >> +        final Iterator<CSVRecord> records =
> > >> CSVFormat.defaults().withHeader("A", "B",
> > "C").build().parse(in).iterator();
> > >>
> > >>         for (int i = 0; i < 3; i++) {
> > >>             assertTrue(records.hasNext());
> > >> @@ -536,7 +536,7 @@ public class CSVParserTest {
> > >>     public void testMappedButNotSetAsOutlook2007ContactExport() throws
> > >> Exception {
> > >>         final Reader in = new StringReader("a,b,c\n1,2\nx,y,z");
> > >>
> > >> -        final Iterator<CSVRecord> records =
> > >> CSVFormat.DEFAULT.withHeader("A", "B", "C").parse(in).iterator();
> > >> +        final Iterator<CSVRecord> records =
> > >> CSVFormat.defaults().withHeader("A", "B",
> > "C").build().parse(in).iterator();
> > >>
> > >>         // header record
> > >>         assertTrue(records.hasNext());
> > >> @@ -578,7 +578,7 @@ public class CSVParserTest {
> > >>     }
> > >>
> > >>     public void testGetHeaderMap() throws Exception {
> > >> -        final CSVParser parser = new CSVParser("a,b,c\n1,2,3\nx,y,z",
> > >> CSVFormat.DEFAULT.withHeader("A", "B", "C"));
> > >> +        final CSVParser parser = new CSVParser("a,b,c\n1,2,3\nx,y,z",
> > >> CSVFormat.defaults().withHeader("A", "B", "C").build());
> > >>         final Map<String, Integer> headerMap = parser.getHeaderMap();
> > >>         final Iterator<String> columnNames =
> > >> headerMap.keySet().iterator();
> > >>         // Headers are iterated in column order.
> > >> @@ -622,7 +622,7 @@ public class CSVParserTest {
> > >>     @Test
> > >>     public void testGetRecordWithMultiiLineValues() throws Exception {
> > >>         final CSVParser parser = new
> CSVParser("\"a\r\n1\",\"a\r\n2\"" +
> > >> CRLF + "\"b\r\n1\",\"b\r\n2\"" + CRLF + "\"c\r\n1\",\"c\r\n2\"",
> > >> -                CSVFormat.DEFAULT.withRecordSeparator(CRLF));
> > >> +
> >  CSVFormat.defaults().withRecordSeparator(CRLF).build());
> > >>         CSVRecord record;
> > >>         assertEquals(0, parser.getRecordNumber());
> > >>         assertEquals(0, parser.getLineNumber());
> > >> @@ -654,7 +654,7 @@ public class CSVParserTest {
> > >>     }
> > >>
> > >>     private void validateRecordNumbers(String lineSeparator) throws
> > >> IOException {
> > >> -        final CSVParser parser = new CSVParser("a" + lineSeparator +
> > "b"
> > >> + lineSeparator + "c",
> > >> CSVFormat.DEFAULT.withRecordSeparator(lineSeparator));
> > >> +        final CSVParser parser = new CSVParser("a" + lineSeparator +
> > "b"
> > >> + lineSeparator + "c",
> > >> CSVFormat.defaults().withRecordSeparator(lineSeparator).build());
> > >>         CSVRecord record;
> > >>         assertEquals(0, parser.getRecordNumber());
> > >>         assertNotNull(record = parser.nextRecord());
> > >> @@ -671,7 +671,7 @@ public class CSVParserTest {
> > >>     }
> > >>
> > >>     private void validateLineNumbers(String lineSeparator) throws
> > >> IOException {
> > >> -        final CSVParser parser = new CSVParser("a" + lineSeparator +
> > "b"
> > >> + lineSeparator + "c",
> > >> CSVFormat.DEFAULT.withRecordSeparator(lineSeparator));
> > >> +        final CSVParser parser = new CSVParser("a" + lineSeparator +
> > "b"
> > >> + lineSeparator + "c",
> > >> CSVFormat.defaults().withRecordSeparator(lineSeparator).build());
> > >>         assertEquals(0, parser.getLineNumber());
> > >>         assertNotNull(parser.nextRecord());
> > >>         assertEquals(1, parser.getLineNumber());
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -220,7 +220,7 @@ public class CSVPrinterTest {
> > >>     @Test
> > >>     public void testMultiLineComment() throws IOException {
> > >>         final StringWriter sw = new StringWriter();
> > >> -        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.DEFAULT.withCommentStart('#'));
> > >> +        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.defaults().withCommentStart('#').build());
> > >>         printer.printComment("This is a comment\non multiple lines");
> > >>
> > >>         assertEquals("# This is a comment" + recordSeparator + "# on
> > >> multiple lines" + recordSeparator, sw.toString());
> > >> @@ -293,7 +293,7 @@ public class CSVPrinterTest {
> > >>     @Test
> > >>     public void testQuoteAll() throws IOException {
> > >>         final StringWriter sw = new StringWriter();
> > >> -        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.DEFAULT.withQuotePolicy(Quote.ALL));
> > >> +        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.defaults().withQuotePolicy(Quote.ALL).build());
> > >>         printer.printRecord("a", "b\nc", "d");
> > >>         assertEquals("\"a\",\"b\nc\",\"d\"" + recordSeparator,
> > >> sw.toString());
> > >>     }
> > >> @@ -301,7 +301,7 @@ public class CSVPrinterTest {
> > >>     @Test
> > >>     public void testQuoteNonNumeric() throws IOException {
> > >>         final StringWriter sw = new StringWriter();
> > >> -        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.DEFAULT.withQuotePolicy(Quote.NON_NUMERIC));
> > >> +        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.defaults().withQuotePolicy(Quote.NON_NUMERIC).build());
> > >>         printer.printRecord("a", "b\nc", Integer.valueOf(1));
> > >>         assertEquals("\"a\",\"b\nc\",1" + recordSeparator,
> > sw.toString());
> > >>     }
> > >> @@ -317,7 +317,7 @@ public class CSVPrinterTest {
> > >>     @Test
> > >>     public void testSingleLineComment() throws IOException {
> > >>         final StringWriter sw = new StringWriter();
> > >> -        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.DEFAULT.withCommentStart('#'));
> > >> +        final CSVPrinter printer = new CSVPrinter(sw,
> > >> CSVFormat.defaults().withCommentStart('#').build());
> > >>         printer.printComment("This is a comment");
> > >>
> > >>         assertEquals("# This is a comment" + recordSeparator,
> > >> sw.toString());
> > >>
> > >> Modified:
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/perf/PerformanceTest.java
> > >> URL:
> > >>
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/perf/PerformanceTest.java?rev=1409449&r1=1409448&r2=1409449&view=diff
> > >>
> > >>
> >
> ==============================================================================
> > >> ---
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/perf/PerformanceTest.java
> > >> (original)
> > >> +++
> > >>
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/perf/PerformanceTest.java
> > >> Wed Nov 14 21:50:36 2012
> > >> @@ -66,7 +66,7 @@ public class PerformanceTest {
> > >>     }
> > >>
> > >>     private long parse(final Reader in, boolean traverseColumns)
> throws
> > >> IOException {
> > >> -        final CSVFormat format =
> > >> CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(false);
> > >> +        final CSVFormat format =
> > >> CSVFormat.defaults().withIgnoreSurroundingSpaces(false).build();
> > >>         long recordCount = 0;
> > >>         for (final CSVRecord record : format.parse(in)) {
> > >>             recordCount++;
> > >>
> > >>
> > >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org
> >
> >
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0
Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message