Author: cziegeler
Date: Wed Nov  9 16:57:16 2016
New Revision: 1769000

URL: http://svn.apache.org/viewvc?rev=1769000&view=rev
Log:
SLING-6267 : Support OSGi versions and provide accessor methods of version parts

Modified:
    
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
    
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Version.java
    
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java
    
sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/VersionTest.java

Modified: 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java?rev=1769000&r1=1768999&r2=1769000&view=diff
==============================================================================
--- 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
 (original)
+++ 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
 Wed Nov  9 16:57:16 2016
@@ -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()) {

Modified: 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Version.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Version.java?rev=1769000&r1=1768999&r2=1769000&view=diff
==============================================================================
--- 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Version.java
 (original)
+++ 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Version.java
 Wed Nov  9 16:57:16 2016
@@ -33,17 +33,19 @@ public class Version implements Comparab
         */
        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 Comparab
             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 Comparab
                }
                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));
+    }
 }

Modified: 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java?rev=1769000&r1=1768999&r2=1769000&view=diff
==============================================================================
--- 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java
 (original)
+++ 
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java
 Wed Nov  9 16:57:16 2016
@@ -17,7 +17,7 @@
  * under the License.
  */
 
[email protected]("1.7.0")
[email protected]("1.8.0")
 package org.apache.sling.provisioning.model;
 
 

Modified: 
sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/VersionTest.java?rev=1769000&r1=1768999&r2=1769000&view=diff
==============================================================================
--- 
sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
 (original)
+++ 
sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/VersionTest.java
 Wed Nov  9 16:57:16 2016
@@ -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());
+    }
 }


Reply via email to