# WARNING: head commit changed in the meantime

Add CSVParser#stream().

- Use JApiCmp instead of Clirr in the default goal.
- Allow for longer lines.
- Fix PMD custom rules for current version of PMD.
- Bump checkstyle from 8.29 to 8.44.
- Bump commons.javadoc.version from 3.2.0 to 3.3.0.
This commit is contained in:
Gary Gregory 2021-07-03 10:31:46 -04:00
parent ee9b09e750
commit 02efd1604f
6 changed files with 60 additions and 23 deletions

38
pom.xml
View File

@ -164,7 +164,8 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<commons.encoding>UTF-8</commons.encoding>
<checkstyle.version>3.1.2</checkstyle.version>
<commons.checkstyle-plugin.version>3.1.2</commons.checkstyle-plugin.version>
<commons.checkstyle.version>8.44</commons.checkstyle.version>
<checkstyle.header.file>${basedir}/src/site/resources/checkstyle/checkstyle-header.txt</checkstyle.header.file>
<checkstyle.config.file>${basedir}/src/site/resources/checkstyle/checkstyle.xml</checkstyle.config.file>
<checkstyle.suppress.file>${basedir}/src/site/resources/checkstyle/checkstyle-suppressions.xml</checkstyle.suppress.file>
@ -181,7 +182,28 @@
</properties>
<build>
<defaultGoal>clean verify apache-rat:check clirr:check checkstyle:check spotbugs:check javadoc:javadoc</defaultGoal>
<defaultGoal>clean package apache-rat:check japicmp:cmp checkstyle:check spotbugs:check javadoc:javadoc</defaultGoal>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${commons.checkstyle-plugin.version}</version>
<configuration>
<configLocation>${checkstyle.config.file}</configLocation>
<enableRulesSummary>false</enableRulesSummary>
<suppressionsLocation>${checkstyle.suppress.file}</suppressionsLocation>
</configuration>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${commons.checkstyle.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
@ -214,12 +236,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${checkstyle.version}</version>
<configuration>
<configLocation>${checkstyle.config.file}</configLocation>
<enableRulesSummary>false</enableRulesSummary>
<suppressionsLocation>${checkstyle.suppress.file}</suppressionsLocation>
</configuration>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
@ -285,12 +301,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${checkstyle.version}</version>
<configuration>
<configLocation>${checkstyle.config.file}</configLocation>
<enableRulesSummary>false</enableRulesSummary>
<suppressionsLocation>${checkstyle.suppress.file}</suppressionsLocation>
</configuration>
<!-- We need to specify reportSets because 2.9.1 creates two reports -->
<reportSets>
<reportSet>

View File

@ -59,26 +59,26 @@
<action issue="CSV-123" type="fix" dev="ggregory" due-to="Emmanuel Bourg, Benedikt Ritter, shivakrishnaah, Gary Gregory">Add possibility to use ResultSet header meta data as CSV header #11.</action>
<!-- ADD -->
<action issue="CSV-275" type="add" dev="ggregory" due-to="Michael Wyraz, Gary Gregory">Make CSVRecord#toList() public.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add CSVRecord#toStream().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add CSVRecord#stream().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add CSVParser#stream().</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Update org.junit.jupiter:junit-jupiter from 5.6.0 to 5.7.0, #84 #109</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from Apache Commons Lang 3.9 to 3.12.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from commons-io:commons-io 2.6 to 2.10.0, #108.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump actions/checkout from v1 to v2.3.4, #79, #92, #121.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-parent from 50 to 51 #80.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update maven-checkstyle-plugin from 3.0.0 to 3.1.1.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump tests from opencsv from 3.1 to 5.2 #81.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump tests from org.mockito:mockito-core 3.2.4 -> 3.4.6; #88.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from super-csv from 2.2.1 to 2.4.0 #86.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump tests mockito-core from 3.4.6 to 3.5.11 #107, #110.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump build actions/setup-java from v1.4.0 to v2, #101, #113.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump maven-pmd-plugin from 3.13.0 to 3.14.0 #122.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump mockito-core from 3.5.11 to 3.11.2, #123, #128, #129, #156.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump tests from org.mockito:mockito-core 3.2.4 -> 3.11.2; #88, #107, #110, #123, #128, #129, #156.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump actions/cache from v2 to v2.1.6 #132, #153.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #131.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump maven-checkstyle-plugin from 3.0.0 to 3.1.2 #131.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump checkstyle from 8.29 to 8.44.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump junit-jupiter from 5.7.0 to 5.7.2 #133, #149.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons.jacoco.version from 0.8.5 to 0.8.7 (Java 16).</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons.spotbugs.version from 4.0.4 to 4.2.3 (Java 16).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons.javadoc.version from 3.2.0 to 3.3.0.</action>
</release>
<release version="1.8" date="2020-02-01" description="Feature and bug fix release (Java 8).

View File

@ -40,7 +40,11 @@ import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.TreeMap;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
/**
* Parses CSV files according to the specified format.
@ -712,4 +716,14 @@ public final class CSVParser implements Iterable<CSVRecord>, Closeable {
return result;
}
/**
* Returns a sequential {@code Stream} with this collection as its source.
*
* @return a sequential {@code Stream} with this collection as its source.
* @since 1.9.0
*/
public Stream<CSVRecord> stream() {
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator(), Spliterator.ORDERED), false);
}
}

View File

@ -56,7 +56,7 @@ limitations under the License.
</module>
<module name="LineLength">
<property name="max" value="120"/>
<property name="max" value="160"/>
</module>
<module name="TreeWalker">

View File

@ -77,12 +77,14 @@
<rule ref="category/java/performance.xml/BigIntegerInstantiation"/>
<rule ref="category/java/performance.xml/BooleanInstantiation"/>
<!-- Rule customisations. -->
<!-- Custom rules. -->
<rule ref="category/java/codestyle.xml/TooManyStaticImports">
<properties>
<property name="violationSuppressXPath"
value="//ClassOrInterfaceDeclaration[@Image='CSVFormat' or @Image='Lexer']"/>
value="//ClassOrInterfaceDeclaration[.[typeIs('org.apache.commons.csv.CSVFormat')]]" />
<property name="violationSuppressXPath"
value="//ClassOrInterfaceDeclaration[.[typeIs('org.apache.commons.csv.Lexer')]]" />
</properties>
</rule>

View File

@ -48,6 +48,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.stream.Collectors;
import org.apache.commons.io.input.BOMInputStream;
import org.junit.jupiter.api.Disabled;
@ -1159,6 +1160,16 @@ public class CSVParserTest {
}
}
@Test
public void testStream() throws Exception {
final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
final List<CSVRecord> list = CSVFormat.DEFAULT.parse(in).stream().collect(Collectors.toList());
assertFalse(list.isEmpty());
assertArrayEquals(new String[] { "a", "b", "c" }, list.get(0).values());
assertArrayEquals(new String[] { "1", "2", "3" }, list.get(1).values());
assertArrayEquals(new String[] { "x", "y", "z" }, list.get(2).values());
}
@Test
public void testTrailingDelimiter() throws Exception {
final Reader in = new StringReader("a,a,a,\n\"1\",\"2\",\"3\",\nx,y,z,");