This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch opennlp-2.x
in repository https://gitbox.apache.org/repos/asf/opennlp.git

commit 81865595192757538aafb08f706457c33312b70f
Author: Richard Zowalla <[email protected]>
AuthorDate: Thu Oct 16 08:20:10 2025 +0200

    Ignore extra patch version component in version parsing
---
 .../src/main/java/opennlp/tools/util/Version.java         | 15 +++++++++++----
 .../src/test/java/opennlp/tools/util/VersionTest.java     |  8 ++++++++
 2 files changed, 19 insertions(+), 4 deletions(-)

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 20474a7f..7fd7de0d 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/util/Version.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/util/Version.java
@@ -161,16 +161,23 @@ public class Version {
     int versionEnd;
     if (indexFirstDash == -1) {
       versionEnd = version.length();
-    }
-    else {
+    } else {
       versionEnd = indexFirstDash;
     }
 
-    boolean snapshot = version.endsWith(SNAPSHOT_MARKER);
+    String revision = version.substring(indexSecondDot + 1, versionEnd);
+    final int indexPatchVersionDot = revision.indexOf('.');
+    if (indexPatchVersionDot != -1) {
+      // A rare extra patch version is present (e.g., 2.5.6.1), which OpenNLP 
normally doesn't use.
+      // Since it’s equivalent to the latest revision, we ignore it here.
+      revision = revision.substring(0, indexPatchVersionDot);
+    }
+
+    final boolean snapshot = version.endsWith(SNAPSHOT_MARKER);
 
     return new Version(Integer.parseInt(version.substring(0, indexFirstDot)),
         Integer.parseInt(version.substring(indexFirstDot + 1, indexSecondDot)),
-        Integer.parseInt(version.substring(indexSecondDot + 1, versionEnd)), 
snapshot);
+        Integer.parseInt(revision), snapshot);
   }
 
   /**
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 8921a932..3133777f 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 @@ public class VersionTest {
         Version.parse("1.5.2-SNAPSHOT"));
   }
 
+  @Test
+  void testParseProjectVersionWithRarePatchVersion() {
+    // A rare extra patch version is present (e.g., 2.5.6.1), which OpenNLP 
normally doesn't use.
+    // Since it’s equivalent to the latest revision, it should be equal to 
2.5.6
+    Assertions.assertEquals(new Version(2, 5, 6, false),
+        Version.parse("2.5.6.1"));
+  }
+
   @Test
   void testParseInvalidVersion() {
     try {

Reply via email to