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:44:53 UTC
svn commit: r1768997 -
/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java
Author: cziegeler
Date: Wed Nov 9 16:44:53 2016
New Revision: 1768997
URL: http://svn.apache.org/viewvc?rev=1768997&view=rev
Log:
SLING-6266 : Feature version should be converted to OSGi version
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java
Modified: sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java?rev=1768997&r1=1768996&r2=1768997&view=diff
==============================================================================
--- sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java (original)
+++ sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java Wed Nov 9 16:44:53 2016
@@ -26,6 +26,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
@@ -139,7 +140,7 @@ public class ModelPreprocessor {
if ( nodeBooleanValue(info.plugin, "setFeatureVersions", false) ) {
for(final Feature f : info.localModel.getFeatures() ) {
if ( f.getVersion() == null ) {
- f.setVersion(info.project.getVersion());
+ f.setVersion(cleanupVersion(info.project.getVersion()));
}
}
}
@@ -582,4 +583,66 @@ public class ModelPreprocessor {
protected void mergeModels(final Model base, final Model additional) throws MavenExecutionException {
MergeUtility.merge(base, additional);
}
+
+ /**
+ * Pattern for converting Maven to OSGi version
+ * Based on the DefaultMaven2OsgiConverter from the Apache Maven Project.
+ */
+ private static final Pattern FUZZY_VERSION = Pattern.compile( "(\\d+)(\\.(\\d+)(\\.(\\d+))?)?([^a-zA-Z0-9](.*))?",
+ Pattern.DOTALL );
+
+
+ private String cleanupVersion( final String version ) {
+ final StringBuilder result = new StringBuilder();
+ final Matcher m = FUZZY_VERSION.matcher( version );
+ if ( m.matches() ) {
+ final String major = m.group( 1 );
+ final String minor = m.group( 3 );
+ final String micro = m.group( 5 );
+ final String qualifier = m.group( 7 );
+
+ if ( major != null ) {
+ result.append( major );
+ if ( minor != null ) {
+ result.append( "." );
+ result.append( minor );
+ if ( micro != null ) {
+ result.append( "." );
+ result.append( micro );
+ if ( qualifier != null )
+ {
+ result.append( "." );
+ cleanupModifier( result, qualifier );
+ }
+ } else if ( qualifier != null ) {
+ result.append( ".0." );
+ cleanupModifier( result, qualifier );
+ } else {
+ result.append( ".0" );
+ }
+ } else if ( qualifier != null ) {
+ result.append( ".0.0." );
+ cleanupModifier( result, qualifier );
+ } else {
+ result.append( ".0.0" );
+ }
+ }
+ } else {
+ result.append( "0.0.0." );
+ cleanupModifier( result, version );
+ }
+ return result.toString();
+ }
+
+ private static void cleanupModifier( final StringBuilder result, final String modifier ) {
+ for ( int i = 0; i < modifier.length(); i++ ) {
+ final char c = modifier.charAt( i );
+ if ( ( c >= '0' && c <= '9' ) || ( c >= 'a' && c <= 'z' ) || ( c >= 'A' && c <= 'Z' ) || c == '_'
+ || c == '-' ) {
+ result.append( c );
+ } else {
+ result.append( '_' );
+ }
+ }
+ }
}