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"))); + } }