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 <[email protected]>
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.
  */
 
[email protected]("1.7.0")
[email protected]("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
"[email protected]" <[email protected]>.

Reply via email to