You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:58:58 UTC

[sling-org-apache-sling-provisioning-model] 03/06: SLING-6267 : Support OSGi versions and provide accessor methods of version parts

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.7.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-provisioning-model.git

commit 46bc2eb1688e6aa5298285bb29002e49a2d44daa
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Nov 9 16:57:16 2016 +0000

    SLING-6267 : Support OSGi versions and provide accessor methods of version parts
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/support/provisioning-model@1769000 13f79535-47bb-0310-9956-ffa450edef68
---
 .../sling/provisioning/model/ModelUtility.java     |  2 +-
 .../apache/sling/provisioning/model/Version.java   | 65 ++++++++++++++++++----
 .../sling/provisioning/model/package-info.java     |  2 +-
 .../sling/provisioning/model/VersionTest.java      |  8 +++
 4 files changed, 65 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java b/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
index 71b8a15..0503f97 100644
--- a/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
+++ b/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
@@ -174,7 +174,7 @@ public abstract class ModelUtility {
                 try {
                     new Version(feature.getVersion());
                 } catch ( final IllegalArgumentException iae) {
-                    errors.put(feature, "Version is not a valid version");
+                    errors.put(feature, "Version is not a valid version: " + feature.getVersion());
                 }
             }
             for(final RunMode runMode : feature.getRunModes()) {
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 028057d..43e42f9 100644
--- a/src/main/java/org/apache/sling/provisioning/model/Version.java
+++ b/src/main/java/org/apache/sling/provisioning/model/Version.java
@@ -33,17 +33,19 @@ public class Version implements Comparable<Version> {
 	 */
 	public Version(final String version) {
 	    String parts[] = version.split("\\.");
-	    if ( parts.length > 3 ) {
+	    if ( parts.length > 4 ) {
 	        throw new IllegalArgumentException("Invalid version " + version);
 	    }
-	    final int pos = parts[parts.length - 1].indexOf('-');
-	    if ( pos != -1 ) {
-	        final String[] newParts = new String[4];
-	        newParts[0] = parts.length > 1 ? parts[0] : parts[0].substring(0, pos);
-            newParts[1] = parts.length > 2 ? parts[1] : (parts.length > 1 ? parts[1].substring(0, pos) : "0");
-            newParts[2] = parts.length > 3 ? parts[2] : (parts.length > 2 ? parts[2].substring(0, pos) : "0");
-            newParts[3] = parts[parts.length - 1].substring(pos + 1);
-            parts = newParts;
+	    if ( parts.length < 4) {
+    	    final int pos = parts[parts.length - 1].indexOf('-');
+    	    if ( pos != -1 ) {
+    	        final String[] newParts = new String[4];
+    	        newParts[0] = parts.length > 1 ? parts[0] : parts[0].substring(0, pos);
+                newParts[1] = parts.length > 2 ? parts[1] : (parts.length > 1 ? parts[1].substring(0, pos) : "0");
+                newParts[2] = parts.length > 3 ? parts[2] : (parts.length > 2 ? parts[2].substring(0, pos) : "0");
+                newParts[3] = parts[parts.length - 1].substring(pos + 1);
+                parts = newParts;
+    	    }
 	    }
 	    this.majorVersion = parseInt(parts[0], version);
 	    if ( parts.length > 1 ) {
@@ -57,10 +59,45 @@ public class Version implements Comparable<Version> {
             this.microVersion = 0;
         }
         this.qualifier = (parts.length > 3 ? parts[3] : "");
-
 	}
 
 	/**
+	 * Get the major version
+	 * @return The major version
+	 * @since 1.8.0
+	 */
+	public int getMajorVersion() {
+        return majorVersion;
+    }
+
+    /**
+     * Get the major version
+     * @return The major version
+     * @since 1.8.0
+     */
+    public int getMinorVersion() {
+        return minorVersion;
+    }
+
+    /**
+     * Get the minor version
+     * @return The minor version
+     * @since 1.8.0
+     */
+    public int getMicroVersion() {
+        return microVersion;
+    }
+
+    /**
+     * Get the qualifier
+     * @return The qualifier, the qualifier might be the empty string.
+     * @since 1.8.0
+     */
+    public String getQualifier() {
+        return qualifier;
+    }
+
+    /**
 	 * Parse an integer.
 	 */
 	private static int parseInt(final String value, final String version) {
@@ -135,4 +172,12 @@ public class Version implements Comparable<Version> {
 		}
 		return result;
 	}
+
+    @Override
+    public String toString() {
+        return String.valueOf(this.majorVersion) + "."
+                + String.valueOf(this.minorVersion + "."
+                + String.valueOf(this.microVersion) +
+                (this.qualifier.length() == 0 ? "" : "." + this.qualifier));
+    }
 }
diff --git a/src/main/java/org/apache/sling/provisioning/model/package-info.java b/src/main/java/org/apache/sling/provisioning/model/package-info.java
index 1a04095..0a4616b 100644
--- a/src/main/java/org/apache/sling/provisioning/model/package-info.java
+++ b/src/main/java/org/apache/sling/provisioning/model/package-info.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@org.osgi.annotation.versioning.Version("1.7.0")
+@org.osgi.annotation.versioning.Version("1.8.0")
 package org.apache.sling.provisioning.model;
 
 
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 f478df9..e97c752 100644
--- a/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
+++ b/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
@@ -86,4 +86,12 @@ public class VersionTest {
         assertTrue(va.compareTo(vb) < 0);
         assertTrue(vb.compareTo(va) > 0);
     }
+
+    @Test
+    public void testOSGiVersion() {
+        final Version v = new Version("1.5.2.SNAPSHOT");
+        assertEquals(1, v.getMajorVersion());
+        assertEquals(5, v.getMinorVersion());
+        assertEquals(2, v.getMicroVersion());
+    }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.