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

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 60bea7e3f1d5ca72b1583af36ba62071a09d4122
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat May 16 19:46:00 2020 +0200

    CAMEL-15072: Component list - Preview vs Stable should be 2 releases back
---
 .../camel/tooling/util/CamelVersionHelper.java     | 39 ++++++++++++++++++++++
 .../camel/tooling/util/CamelVersionHelperTest.java | 21 ++++++++++--
 2 files changed, 58 insertions(+), 2 deletions(-)

diff --git 
a/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/CamelVersionHelper.java
 
b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/CamelVersionHelper.java
index 4a1cdf9..e420bd6 100644
--- 
a/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/CamelVersionHelper.java
+++ 
b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/CamelVersionHelper.java
@@ -58,6 +58,27 @@ public final class CamelVersionHelper {
         return ver2.compareTo(ver1) >= 0;
     }
 
+    /**
+     * Returns the previous minor version number
+     *
+     * @param base  the version
+     * @return the previous minor version, eg 3.3.0 as input, returns 3.2.0 as 
output
+     */
+    public static String prevMinor(String base) {
+        if (base == null || base.isEmpty()) {
+            throw new IllegalArgumentException("Empty base version");
+        }
+
+        // strip suffix/qualifier as we dont support that
+        base = base.replaceAll("[^\\d|^\\.]", "");
+        if (!base.matches("[0-9]+(\\.[0-9]+)*")) {
+            throw new IllegalArgumentException("Invalid version format");
+        }
+
+        Version ver = new Version(base);
+        return ver.prevMinor();
+    }
+
     private static final class Version implements Comparable<Version> {
 
         private final String version;
@@ -90,6 +111,24 @@ public final class CamelVersionHelper {
             return 0;
         }
 
+        public String prevMinor() {
+            String[] parts = this.getVersion().split("\\.");
+            int major = Integer.parseInt(parts[0]);
+            int minor = Integer.parseInt(parts[1]);
+            int patch = parts.length == 3 ? Integer.parseInt(parts[2]) : 0;
+
+            if (minor > 0) {
+                minor -= 1;
+            }
+
+            String prev = major + "." + minor + "." + patch;
+            return prev;
+        }
+
+        @Override
+        public String toString() {
+            return version;
+        }
     }
 
 }
diff --git 
a/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/CamelVersionHelperTest.java
 
b/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/CamelVersionHelperTest.java
index 2dd66e0..458b090 100644
--- 
a/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/CamelVersionHelperTest.java
+++ 
b/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/CamelVersionHelperTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.tooling.util;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.tooling.util.CamelVersionHelper.isGE;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.apache.camel.tooling.util.CamelVersionHelper.prevMinor;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class CamelVersionHelperTest {
 
@@ -44,4 +44,21 @@ public class CamelVersionHelperTest {
         assertTrue(isGE("3.3.0", "3.3.0-SNAPSHOT"));
         assertTrue(isGE("3.4.0", "3.4.0-SNAPSHOT"));
     }
+
+    @Test
+    public void testPrevMinor() throws Exception {
+        assertEquals("3.2.0", prevMinor("3.3.0"));
+        assertEquals("3.2.1", prevMinor("3.3.1"));
+        assertEquals("3.0.0", prevMinor("3.0.0"));
+        assertEquals("3.0.1", prevMinor("3.0.1"));
+        assertEquals("3.3.1", prevMinor("3.4.1"));
+        assertEquals("3.4.0", prevMinor("3.5.0-SNAPSHOT"));
+        assertEquals("3.5.0", prevMinor("3.6-SNAPSHOT"));
+
+        assertEquals("3.4.0", prevMinor(prevMinor("3.6-SNAPSHOT")));
+        assertEquals("3.4.0", prevMinor(prevMinor("3.6.0-SNAPSHOT")));
+        assertEquals("3.4.1", prevMinor(prevMinor("3.6.1")));
+        assertEquals("3.0.0", prevMinor(prevMinor("3.2.0")));
+        assertEquals("3.0.1", prevMinor(prevMinor("3.1.1")));
+    }
 }

Reply via email to