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]>.
