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

rombert pushed a commit to annotated tag 
org.apache.sling.provisioning.model-1.4.2
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-provisioning-model.git

commit 6bb2a5eeabfd0f396cea8c6f8de916544667c23c
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Thu Oct 22 12:02:38 2015 +0000

    SLING-5185 : Version comparision is wrong in case of qualifiers
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/tooling/support/provisioning-model@1709998
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../apache/sling/provisioning/model/Version.java   |  9 ++++++-
 .../sling/provisioning/model/VersionTest.java      | 29 +++++++++++++++++-----
 2 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/apache/sling/provisioning/model/Version.java 
b/src/main/java/org/apache/sling/provisioning/model/Version.java
index 8d5e990..028057d 100644
--- a/src/main/java/org/apache/sling/provisioning/model/Version.java
+++ b/src/main/java/org/apache/sling/provisioning/model/Version.java
@@ -119,7 +119,14 @@ public class Version implements Comparable<Version> {
                    if (result == 0) {
                        result = microVersion - other.microVersion;
                        if (result == 0) {
-                           result = other.qualifier.compareTo(qualifier);
+                           result = qualifier.compareTo(other.qualifier);
+                           if ( result != 0 ) {
+                               if ( "SNAPSHOT".equals(qualifier) ) {
+                                   result = -1;
+                               } else if ( "SNAPSHOT".equals(other.qualifier) 
) {
+                                   result = 1;
+                               }
+                           }
                        }
                    }
 
diff --git a/src/test/java/org/apache/sling/provisioning/model/VersionTest.java 
b/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
index d242c8c..f478df9 100644
--- a/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
+++ b/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
@@ -60,13 +60,30 @@ public class VersionTest {
     }
 
     @Test
-    public void testQualifier() {
-        final String v1 = "1";
-        final String v1snapshot = "1-SNAPSHOT";
+    public void testSnapshotQualifier() {
+        final Version v1 = new Version("1");
+        final Version v1snapshot = new Version("1-SNAPSHOT");
+        final Version v1a = new Version("1-A");
 
-        final Version ve1 = new Version(v1);
-        final Version ve1snapshot = new Version(v1snapshot);
+        // snapshot is lower than the corresponding version
+        assertTrue(v1.compareTo(v1snapshot) > 0);
+        assertTrue(v1snapshot.compareTo(v1) < 0);
+
+        // qualifier is higher than the version
+        assertTrue(v1a.compareTo(v1) > 0);
+        assertTrue(v1.compareTo(v1a) < 0);
+
+        // qualifier is higher than snapshot
+        assertTrue(v1a.compareTo(v1snapshot) > 0);
+        assertTrue(v1snapshot.compareTo(v1a) < 0);
+    }
+
+    @Test
+    public void testQualifiers() {
+        final Version va = new Version("1-A");
+        final Version vb = new Version("1-B");
 
-        assertTrue(ve1.compareTo(ve1snapshot) > 0);
+        assertTrue(va.compareTo(vb) < 0);
+        assertTrue(vb.compareTo(va) > 0);
     }
 }

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to