Bump commons-parent from 69 to 70

Fix PMD issues for port to PMD 7.1.0
This commit is contained in:
Gary Gregory 2024-05-22 09:43:28 -04:00
parent bef059b932
commit a36d5bcbb1
4 changed files with 78 additions and 100 deletions

View File

@ -20,7 +20,7 @@
<parent>
<groupId>org.apache.commons</groupId>
<artifactId>commons-parent</artifactId>
<version>69</version>
<version>70</version>
</parent>
<artifactId>commons-csv</artifactId>
<version>1.11.1-SNAPSHOT</version>
@ -216,9 +216,6 @@
<configuration>
<targetJdk>${maven.compiler.target}</targetJdk>
<skipEmptyReport>false</skipEmptyReport>
<rulesets>
<ruleset>${basedir}/src/site/resources/pmd/pmd-ruleset.xml</ruleset>
</rulesets>
</configuration>
</plugin>
<!-- We need to add our test data files to rat exclusions -->

View File

@ -43,8 +43,10 @@
<release version="1.11.1" date="YYYY-MM-DD" description="Feature and bug fix release (Java 8 or above)">
<!-- ADD -->
<!-- FIX -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix PMD issues for port to PMD 7.1.0.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-codec:commons-codec from 1.16.1 to 1.17.0 #422.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-parent from 69 to 70.</action>
</release>
<release version="1.11.0" date="2024-04-28" description="Feature and bug fix release (Java 8 or above)">
<!-- ADD -->

View File

@ -17,17 +17,6 @@
package org.apache.commons.csv;
import static org.apache.commons.csv.Constants.BACKSLASH;
import static org.apache.commons.csv.Constants.COMMA;
import static org.apache.commons.csv.Constants.COMMENT;
import static org.apache.commons.csv.Constants.CR;
import static org.apache.commons.csv.Constants.CRLF;
import static org.apache.commons.csv.Constants.DOUBLE_QUOTE_CHAR;
import static org.apache.commons.csv.Constants.EMPTY;
import static org.apache.commons.csv.Constants.LF;
import static org.apache.commons.csv.Constants.PIPE;
import static org.apache.commons.csv.Constants.SP;
import static org.apache.commons.csv.Constants.TAB;
import static org.apache.commons.io.IOUtils.EOF;
import java.io.File;
@ -203,7 +192,7 @@ public final class CSVFormat implements Serializable {
* @return a copy of the builder
*/
public static Builder create() {
return new Builder(CSVFormat.DEFAULT);
return new Builder(DEFAULT);
}
/**
@ -850,57 +839,57 @@ public final class CSVFormat implements Serializable {
/**
* @see CSVFormat#DEFAULT
*/
Default(CSVFormat.DEFAULT),
Default(DEFAULT),
/**
* @see CSVFormat#EXCEL
*/
Excel(CSVFormat.EXCEL),
Excel(EXCEL),
/**
* @see CSVFormat#INFORMIX_UNLOAD
* @since 1.3
*/
InformixUnload(CSVFormat.INFORMIX_UNLOAD),
InformixUnload(INFORMIX_UNLOAD),
/**
* @see CSVFormat#INFORMIX_UNLOAD_CSV
* @since 1.3
*/
InformixUnloadCsv(CSVFormat.INFORMIX_UNLOAD_CSV),
InformixUnloadCsv(INFORMIX_UNLOAD_CSV),
/**
* @see CSVFormat#MONGODB_CSV
* @since 1.7
*/
MongoDBCsv(CSVFormat.MONGODB_CSV),
MongoDBCsv(MONGODB_CSV),
/**
* @see CSVFormat#MONGODB_TSV
* @since 1.7
*/
MongoDBTsv(CSVFormat.MONGODB_TSV),
MongoDBTsv(MONGODB_TSV),
/**
* @see CSVFormat#MYSQL
*/
MySQL(CSVFormat.MYSQL),
MySQL(MYSQL),
/**
* @see CSVFormat#ORACLE
*/
Oracle(CSVFormat.ORACLE),
Oracle(ORACLE),
/**
* @see CSVFormat#POSTGRESQL_CSV
* @since 1.5
*/
PostgreSQLCsv(CSVFormat.POSTGRESQL_CSV),
PostgreSQLCsv(POSTGRESQL_CSV),
/**
* @see CSVFormat#POSTGRESQL_CSV
*/
PostgreSQLText(CSVFormat.POSTGRESQL_TEXT),
PostgreSQLText(POSTGRESQL_TEXT),
/**
* @see CSVFormat#RFC4180
@ -945,8 +934,8 @@ public final class CSVFormat implements Serializable {
*
* @see Predefined#Default
*/
public static final CSVFormat DEFAULT = new CSVFormat(COMMA, DOUBLE_QUOTE_CHAR, null, null, null, false, true, CRLF, null, null, null, false, false, false,
false, false, false, DuplicateHeaderMode.ALLOW_ALL, false, false);
public static final CSVFormat DEFAULT = new CSVFormat(Constants.COMMA, Constants.DOUBLE_QUOTE_CHAR, null, null, null, false, true, Constants.CRLF, null,
null, null, false, false, false, false, false, false, DuplicateHeaderMode.ALLOW_ALL, false, false);
/**
* Excel file format (using a comma as the value delimiter). Note that the actual value delimiter used by Excel is locale-dependent, it might be necessary
@ -1014,10 +1003,10 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat INFORMIX_UNLOAD = DEFAULT.builder()
.setDelimiter(PIPE)
.setEscape(BACKSLASH)
.setQuote(DOUBLE_QUOTE_CHAR)
.setRecordSeparator(LF)
.setDelimiter(Constants.PIPE)
.setEscape(Constants.BACKSLASH)
.setQuote(Constants.DOUBLE_QUOTE_CHAR)
.setRecordSeparator(Constants.LF)
.build();
// @formatter:on
@ -1045,9 +1034,9 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat INFORMIX_UNLOAD_CSV = DEFAULT.builder()
.setDelimiter(COMMA)
.setQuote(DOUBLE_QUOTE_CHAR)
.setRecordSeparator(LF)
.setDelimiter(Constants.COMMA)
.setQuote(Constants.DOUBLE_QUOTE_CHAR)
.setRecordSeparator(Constants.LF)
.build();
// @formatter:on
@ -1085,9 +1074,9 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat MONGODB_CSV = DEFAULT.builder()
.setDelimiter(COMMA)
.setEscape(DOUBLE_QUOTE_CHAR)
.setQuote(DOUBLE_QUOTE_CHAR)
.setDelimiter(Constants.COMMA)
.setEscape(Constants.DOUBLE_QUOTE_CHAR)
.setQuote(Constants.DOUBLE_QUOTE_CHAR)
.setQuoteMode(QuoteMode.MINIMAL)
.setSkipHeaderRecord(false)
.build();
@ -1122,9 +1111,9 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat MONGODB_TSV = DEFAULT.builder()
.setDelimiter(TAB)
.setEscape(DOUBLE_QUOTE_CHAR)
.setQuote(DOUBLE_QUOTE_CHAR)
.setDelimiter(Constants.TAB)
.setEscape(Constants.DOUBLE_QUOTE_CHAR)
.setQuote(Constants.DOUBLE_QUOTE_CHAR)
.setQuoteMode(QuoteMode.MINIMAL)
.setSkipHeaderRecord(false)
.build();
@ -1157,11 +1146,11 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat MYSQL = DEFAULT.builder()
.setDelimiter(TAB)
.setEscape(BACKSLASH)
.setDelimiter(Constants.TAB)
.setEscape(Constants.BACKSLASH)
.setIgnoreEmptyLines(false)
.setQuote(null)
.setRecordSeparator(LF)
.setRecordSeparator(Constants.LF)
.setNullString(Constants.SQL_NULL_STRING)
.setQuoteMode(QuoteMode.ALL_NON_NULL)
.build();
@ -1196,10 +1185,10 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat ORACLE = DEFAULT.builder()
.setDelimiter(COMMA)
.setEscape(BACKSLASH)
.setDelimiter(Constants.COMMA)
.setEscape(Constants.BACKSLASH)
.setIgnoreEmptyLines(false)
.setQuote(DOUBLE_QUOTE_CHAR)
.setQuote(Constants.DOUBLE_QUOTE_CHAR)
.setNullString(Constants.SQL_NULL_STRING)
.setTrim(true)
.setRecordSeparator(System.lineSeparator())
@ -1235,12 +1224,12 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat POSTGRESQL_CSV = DEFAULT.builder()
.setDelimiter(COMMA)
.setDelimiter(Constants.COMMA)
.setEscape(null)
.setIgnoreEmptyLines(false)
.setQuote(DOUBLE_QUOTE_CHAR)
.setRecordSeparator(LF)
.setNullString(EMPTY)
.setQuote(Constants.DOUBLE_QUOTE_CHAR)
.setRecordSeparator(Constants.LF)
.setNullString(Constants.EMPTY)
.setQuoteMode(QuoteMode.ALL_NON_NULL)
.build();
// @formatter:off
@ -1273,11 +1262,11 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat POSTGRESQL_TEXT = DEFAULT.builder()
.setDelimiter(TAB)
.setEscape(BACKSLASH)
.setDelimiter(Constants.TAB)
.setEscape(Constants.BACKSLASH)
.setIgnoreEmptyLines(false)
.setQuote(null)
.setRecordSeparator(LF)
.setRecordSeparator(Constants.LF)
.setNullString(Constants.SQL_NULL_STRING)
.setQuoteMode(QuoteMode.ALL_NON_NULL)
.build();
@ -1319,7 +1308,7 @@ public final class CSVFormat implements Serializable {
*/
// @formatter:off
public static final CSVFormat TDF = DEFAULT.builder()
.setDelimiter(TAB)
.setDelimiter(Constants.TAB)
.setIgnoreSurroundingSpaces(true)
.build();
// @formatter:on
@ -1356,7 +1345,7 @@ public final class CSVFormat implements Serializable {
* @return true if {@code c} contains a line break character.
*/
private static boolean containsLineBreak(final String source) {
return contains(source, CR) || contains(source, LF);
return contains(source, Constants.CR) || contains(source, Constants.LF);
}
static boolean isBlank(final String value) {
@ -1371,7 +1360,7 @@ public final class CSVFormat implements Serializable {
* @return true if {@code c} is a line break character.
*/
private static boolean isLineBreak(final char c) {
return c == LF || c == CR;
return c == Constants.LF || c == Constants.CR;
}
/**
@ -1387,7 +1376,7 @@ public final class CSVFormat implements Serializable {
/** Same test as in as {@link String#trim()}. */
private static boolean isTrimChar(final char ch) {
return ch <= SP;
return ch <= Constants.SP;
}
/** Same test as in as {@link String#trim()}. */
@ -2121,7 +2110,7 @@ public final class CSVFormat implements Serializable {
if (value == null) {
// https://issues.apache.org/jira/browse/CSV-203
if (null == nullString) {
charSequence = EMPTY;
charSequence = Constants.EMPTY;
} else if (QuoteMode.ALL == quoteMode) {
charSequence = quotedNullString;
} else {
@ -2259,8 +2248,8 @@ public final class CSVFormat implements Serializable {
while (pos < end) {
char c = charSeq.charAt(pos);
final boolean isDelimiterStart = isDelimiter(c, charSeq, pos, delimArray, delimLength);
final boolean isCr = c == CR;
final boolean isLf = c == LF;
final boolean isCr = c == Constants.CR;
final boolean isLf = c == Constants.LF;
if (isCr || isLf || c == escape || isDelimiterStart) {
// write out segment up until this char
if (pos > start) {
@ -2308,8 +2297,8 @@ public final class CSVFormat implements Serializable {
Arrays.fill(lookAheadBuffer, (char) 0);
final String test = builder.toString() + new String(bufferedReader.lookAhead(lookAheadBuffer));
final boolean isDelimiterStart = isDelimiter((char) c, test, pos, delimArray, delimLength);
final boolean isCr = c == CR;
final boolean isLf = c == LF;
final boolean isCr = c == Constants.CR;
final boolean isLf = c == Constants.LF;
if (isCr || isLf || c == escape || isDelimiterStart) {
// write out segment up until this char
if (pos > start) {
@ -2381,7 +2370,7 @@ public final class CSVFormat implements Serializable {
}
} else {
char c = charSeq.charAt(pos);
if (c <= COMMENT) {
if (c <= Constants.COMMENT) {
// Some other chars at the start of a value caused the parser to fail, so for now
// encapsulate if we start in anything less than '#'. We are being conservative
// by including the default comment char too.
@ -2389,7 +2378,7 @@ public final class CSVFormat implements Serializable {
} else {
while (pos < len) {
c = charSeq.charAt(pos);
if (c == LF || c == CR || c == quoteChar || c == escapeChar || isDelimiter(c, charSeq, pos, delim, delimLength)) {
if (c == Constants.LF || c == Constants.CR || c == quoteChar || c == escapeChar || isDelimiter(c, charSeq, pos, delim, delimLength)) {
quote = true;
break;
}

View File

@ -17,16 +17,6 @@
package org.apache.commons.csv;
import static org.apache.commons.csv.Constants.BACKSPACE;
import static org.apache.commons.csv.Constants.CR;
import static org.apache.commons.csv.Constants.FF;
import static org.apache.commons.csv.Constants.LF;
import static org.apache.commons.csv.Constants.TAB;
import static org.apache.commons.csv.Constants.UNDEFINED;
import static org.apache.commons.csv.Token.Type.COMMENT;
import static org.apache.commons.csv.Token.Type.EORECORD;
import static org.apache.commons.csv.Token.Type.INVALID;
import static org.apache.commons.csv.Token.Type.TOKEN;
import static org.apache.commons.io.IOUtils.EOF;
import java.io.Closeable;
@ -37,8 +27,8 @@ import java.io.IOException;
*/
final class Lexer implements Closeable {
private static final String CR_STRING = Character.toString(CR);
private static final String LF_STRING = Character.toString(LF);
private static final String CR_STRING = Character.toString(Constants.CR);
private static final String LF_STRING = Character.toString(Constants.LF);
/**
* Constant char to use for disabling comments, escapes, and encapsulation. The value -2 is used because it
@ -202,7 +192,7 @@ final class Lexer implements Closeable {
* @return true if the character is at the start of a line.
*/
boolean isStartOfLine(final int ch) {
return ch == LF || ch == CR || ch == UNDEFINED;
return ch == Constants.LF || ch == Constants.CR || ch == Constants.UNDEFINED;
}
private char mapNullToDisabled(final Character c) {
@ -257,11 +247,11 @@ final class Lexer implements Closeable {
}
final String comment = line.trim();
token.content.append(comment);
token.type = COMMENT;
token.type = Token.Type.COMMENT;
return token;
}
// Important: make sure a new char gets consumed in each iteration
while (token.type == INVALID) {
while (token.type == Token.Type.INVALID) {
// ignore whitespaces at beginning of a token
if (ignoreSurroundingSpaces) {
while (Character.isWhitespace((char) c) && !isDelimiter(c) && !eol) {
@ -272,11 +262,11 @@ final class Lexer implements Closeable {
// ok, start of token reached: encapsulated, or token
if (isDelimiter(c)) {
// empty token return TOKEN("")
token.type = TOKEN;
token.type = Token.Type.TOKEN;
} else if (eol) {
// empty token return EORECORD("")
// noop: token.content.append("");
token.type = EORECORD;
token.type = Token.Type.EORECORD;
} else if (isQuoteChar(c)) {
// consume encapsulated token
parseEncapsulatedToken(token);
@ -334,7 +324,7 @@ final class Lexer implements Closeable {
while (true) {
c = reader.read();
if (isDelimiter(c)) {
token.type = TOKEN;
token.type = Token.Type.TOKEN;
return token;
}
if (isEndOfFile(c)) {
@ -343,7 +333,7 @@ final class Lexer implements Closeable {
return token;
}
if (readEndOfLine(c)) {
token.type = EORECORD;
token.type = Token.Type.EORECORD;
return token;
}
if (trailingData) {
@ -406,7 +396,7 @@ final class Lexer implements Closeable {
// Faster to use while(true)+break than while(token.type == INVALID)
while (true) {
if (readEndOfLine(ch)) {
token.type = EORECORD;
token.type = Token.Type.EORECORD;
break;
}
if (isEndOfFile(ch)) {
@ -415,7 +405,7 @@ final class Lexer implements Closeable {
break;
}
if (isDelimiter(ch)) {
token.type = TOKEN;
token.type = Token.Type.TOKEN;
break;
}
// continue
@ -450,7 +440,7 @@ final class Lexer implements Closeable {
*/
boolean readEndOfLine(int ch) throws IOException {
// check if we have \r\n...
if (ch == CR && reader.lookAhead() == LF) {
if (ch == Constants.CR && reader.lookAhead() == Constants.LF) {
// note: does not change ch outside of this method!
ch = reader.read();
// Save the EOL state
@ -460,14 +450,14 @@ final class Lexer implements Closeable {
}
// save EOL state here.
if (firstEol == null) {
if (ch == LF) {
if (ch == Constants.LF) {
this.firstEol = LF_STRING;
} else if (ch == CR) {
} else if (ch == Constants.CR) {
this.firstEol = CR_STRING;
}
}
return ch == LF || ch == CR;
return ch == Constants.LF || ch == Constants.CR;
}
// TODO escape handling needs more work
@ -487,20 +477,20 @@ final class Lexer implements Closeable {
final int ch = reader.read();
switch (ch) {
case 'r':
return CR;
return Constants.CR;
case 'n':
return LF;
return Constants.LF;
case 't':
return TAB;
return Constants.TAB;
case 'b':
return BACKSPACE;
return Constants.BACKSPACE;
case 'f':
return FF;
case CR:
case LF:
case FF: // TODO is this correct?
case TAB: // TODO is this correct? Do tabs need to be escaped?
case BACKSPACE: // TODO is this correct?
return Constants.FF;
case Constants.CR:
case Constants.LF:
case Constants.FF: // TODO is this correct?
case Constants.TAB: // TODO is this correct? Do tabs need to be escaped?
case Constants.BACKSPACE: // TODO is this correct?
return ch;
case EOF:
throw new IOException("EOF whilst processing escape sequence");