diff --git a/opennlp-core/opennlp-runtime/src/main/java/opennlp/tools/util/Version.java b/opennlp-core/opennlp-runtime/src/main/java/opennlp/tools/util/Version.java index 64438175a..7118e470c 100644 --- a/opennlp-core/opennlp-runtime/src/main/java/opennlp/tools/util/Version.java +++ b/opennlp-core/opennlp-runtime/src/main/java/opennlp/tools/util/Version.java @@ -156,13 +156,15 @@ 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 { + } 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 8921a932f..a9b35fdae 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java @@ -36,6 +36,14 @@ void testParse() { Version.parse("1.5.2")); } + @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 testParseSnapshot() { Assertions.assertEquals(new Version(1, 5, 2, true),