diff --git a/appng-core/pom.xml b/appng-core/pom.xml index 1cb27ffbd..b3ccd03c1 100644 --- a/appng-core/pom.xml +++ b/appng-core/pom.xml @@ -360,6 +360,11 @@ appng-rest-api provided + + de.skuzzle + semantic-version + 1.2.0 + diff --git a/appng-core/src/main/java/org/appng/core/model/RepositoryUtils.java b/appng-core/src/main/java/org/appng/core/model/RepositoryUtils.java index a0da86fbb..70c11a8d8 100644 --- a/appng-core/src/main/java/org/appng/core/model/RepositoryUtils.java +++ b/appng-core/src/main/java/org/appng/core/model/RepositoryUtils.java @@ -20,10 +20,11 @@ import java.text.SimpleDateFormat; import java.util.Date; -import org.apache.commons.lang3.StringUtils; import org.appng.core.domain.PackageArchiveImpl; import org.appng.xml.application.PackageInfo; +import de.skuzzle.semantic.Version; + /** * Utility class offering methods that help dealing with {@link PackageVersion}s and {@link PackageInfo}rmations. * @@ -73,10 +74,10 @@ public static boolean isNewer(PackageInfo packageA, PackageInfo packageB) { if (null == packageB) { return true; } else { - Long timestampA = getDate(packageA).getTime(); - Long timestampB = getDate(packageB).getTime(); - int isVersionNewer = StringUtils.compare(packageA.getVersion(), packageB.getVersion()); - return (0 == isVersionNewer) ? (timestampA > timestampB) : (0 > isVersionNewer ? false : true); + Version versionA = Version.parseVersion(packageA.getVersion() + "-" + packageA.getTimestamp(), true); + Version versionB = Version.parseVersion(packageB.getVersion() + "-" + packageB.getTimestamp(), true); + int isVersionNewer = versionB.compareTo(versionA); + return 0 > isVersionNewer ? true : false; } } diff --git a/appng-core/src/test/java/org/appng/core/model/RepositoryUtilsTest.java b/appng-core/src/test/java/org/appng/core/model/RepositoryUtilsTest.java index b598ff83d..d9c3445a6 100644 --- a/appng-core/src/test/java/org/appng/core/model/RepositoryUtilsTest.java +++ b/appng-core/src/test/java/org/appng/core/model/RepositoryUtilsTest.java @@ -22,9 +22,9 @@ import org.junit.Test; public class RepositoryUtilsTest { - + @Test - public void testIsSnapshot(){ + public void testIsSnapshot() { Assert.assertFalse(RepositoryUtils.isSnapshot("snapshot")); Assert.assertFalse(RepositoryUtils.isSnapshot("SNAPSHOT")); Assert.assertFalse(RepositoryUtils.isSnapshot("sNaPsHoT")); @@ -32,7 +32,7 @@ public void testIsSnapshot(){ } @Test - public void testGetDate(){ + public void testGetDate() { ApplicationInfo app = new ApplicationInfo(); app.setTimestamp("19700101-0100"); Date date = RepositoryUtils.getDate(app); @@ -69,6 +69,15 @@ public void testIsNewer() { Assert.assertTrue(RepositoryUtils.isNewer(v2_0_0, v1_0_0_a)); Assert.assertTrue(RepositoryUtils.isNewer(v2_0_0, v1_0_0_b)); Assert.assertTrue(RepositoryUtils.isNewer(v2_0_0, v1_1_0)); + + ApplicationInfo v0_9_0 = new ApplicationInfo(); + v0_9_0.setVersion("0.9.0"); + ApplicationInfo v0_40_0 = new ApplicationInfo(); + v0_40_0.setVersion("0.40.0"); + + Assert.assertTrue(RepositoryUtils.isNewer(v0_40_0, v0_9_0)); + Assert.assertTrue(RepositoryUtils.isNewer(v0_40_0, v0_9_0)); + Assert.assertTrue(RepositoryUtils.isNewer(v0_40_0, v0_9_0)); } }