From 6ace2969df564cc7ead2e79f5adb6a269c72a9bb Mon Sep 17 00:00:00 2001 From: Rostislav Svoboda Date: Fri, 28 Nov 2025 09:29:30 +0100 Subject: [PATCH] Parse suffixed version without error Signed-off-by: Rostislav Svoboda --- .../src/main/java/opennlp/tools/util/Version.java | 5 ++++- .../src/test/java/opennlp/tools/util/VersionTest.java | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/Version.java b/opennlp-tools/src/main/java/opennlp/tools/util/Version.java index 7fd7de0dd..06ce68a65 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/Version.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/Version.java @@ -156,11 +156,14 @@ public static Version parse(String version) { throw new NumberFormatException("Invalid version format '" + version + "', expected two dots!"); } + int indexThirdDot = version.indexOf('.', indexSecondDot + 1); int indexFirstDash = version.indexOf('-'); int versionEnd; - if (indexFirstDash == -1) { + if (indexFirstDash == -1 && indexThirdDot == -1) { versionEnd = version.length(); + } else if (indexThirdDot != -1) { + versionEnd = indexThirdDot; } else { versionEnd = indexFirstDash; } diff --git a/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java b/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java index 3133777f7..6c0d6d349 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java @@ -44,6 +44,14 @@ void testParseSnapshot() { Version.parse("1.5.2-SNAPSHOT")); } + @Test + void testParseSuffixedVersion() { + Assertions.assertEquals(new Version(1, 5, 4, false), + Version.parse("1.5.4.foobar-007")); + Assertions.assertEquals(new Version(1, 5, 4, false), + Version.parse("1.5.4.foobar")); + } + @Test void testParseProjectVersionWithRarePatchVersion() { // A rare extra patch version is present (e.g., 2.5.6.1), which OpenNLP normally doesn't use.