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

svn commit: r1769000 - in /sling/trunk/tooling/support/provisioning-model/src: main/java/org/apache/sling/provisioning/model/ test/java/org/apache/sling/provisioning/model/

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.
  */
 
-@org.osgi.annotation.versioning.Version("1.7.0")
+@org.osgi.annotation.versioning.Version("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());
+    }
 }