diff --git a/src/main/java/org/apache/commons/beanutils2/converters/PointConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/PointConverter.java index 29c0c10ff..50d0c5636 100644 --- a/src/main/java/org/apache/commons/beanutils2/converters/PointConverter.java +++ b/src/main/java/org/apache/commons/beanutils2/converters/PointConverter.java @@ -72,7 +72,7 @@ protected T convertToType(final Class type, final Object value) throws Th } final String coordinates = stringValue.substring(1, lastCharIndex); - final String[] xy = POINT_SPLIT.split(coordinates); + final String[] xy = POINT_SPLIT.split(coordinates, -1); if (xy.length != 2) { throw new IllegalArgumentException("Point must have an x coordinate, and y coordinate only, expecting the following format: (40, 200)"); diff --git a/src/test/java/org/apache/commons/beanutils2/converters/PointConverterTest.java b/src/test/java/org/apache/commons/beanutils2/converters/PointConverterTest.java index d5d33a68c..9904ebc56 100644 --- a/src/test/java/org/apache/commons/beanutils2/converters/PointConverterTest.java +++ b/src/test/java/org/apache/commons/beanutils2/converters/PointConverterTest.java @@ -20,9 +20,11 @@ package org.apache.commons.beanutils2.converters; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.awt.Point; +import org.apache.commons.beanutils2.ConversionException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -53,4 +55,10 @@ void testConvertingPoint() { final Point actual = converter.convert(Point.class, "(100, 200)"); assertEquals(expected, actual); } + + @Test + void testTrailingSeparatorRejected() { + assertThrows(ConversionException.class, () -> converter.convert(Point.class, "(100,200,)")); + assertThrows(ConversionException.class, () -> converter.convert(Point.class, "(100,200,,)")); + } }