You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2017/09/12 14:21:30 UTC
svn commit: r1808119 -
/sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/ArtifactId.java
Author: pauls
Date: Tue Sep 12 14:21:30 2017
New Revision: 1808119
URL: http://svn.apache.org/viewvc?rev=1808119&view=rev
Log:
Improve version parsing special case handling to support <version>.<version>_<versions>
Modified:
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/ArtifactId.java
Modified: sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/ArtifactId.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/ArtifactId.java?rev=1808119&r1=1808118&r2=1808119&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/ArtifactId.java (original)
+++ sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/ArtifactId.java Tue Sep 12 14:21:30 2017
@@ -18,6 +18,10 @@ package org.apache.sling.feature;
import org.osgi.framework.Version;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
/**
* An artifact identifier.
*
@@ -246,13 +250,10 @@ public class ArtifactId implements Compa
*/
public Version getOSGiVersion() {
String parts[] = version.split("\\.");
- // special case for strange versions like NUMBER_NUMBER
- if ( parts.length == 1 && parts[0].indexOf('_') != -1 ) {
- final int pos = parts[0].indexOf('_');
- parts = new String[] {parts[0].substring(0, pos), parts[0].substring(pos +1)};
- }
+
if ( parts.length < 4) {
- final int pos = parts[parts.length - 1].indexOf('-');
+
+ 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);
@@ -261,6 +262,18 @@ public class ArtifactId implements Compa
newParts[3] = parts[parts.length - 1].substring(pos + 1);
parts = newParts;
}
+ else {
+ // special case for strange versions like NUMBER_NUMBER
+ for (int i = 0; i < parts.length; i++) {
+ for (pos = parts[i].indexOf('_'); pos != -1 && pos < parts[i].length() - 1; pos = parts[i].indexOf('_')) {
+ List<String> newParts = new ArrayList<>(Arrays.asList(parts));
+ newParts.remove(i);
+ newParts.add(i, parts[i].substring(0, pos));
+ newParts.add(i + 1, parts[i].substring(pos + 1));
+ parts = newParts.toArray(new String[0]);
+ }
+ }
+ }
}
if ( parts.length >= 4 ) {
final int pos = parts[2].indexOf('-');