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('-');