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