Merge pull request #58 from Fenrock/felix6337
[FELIX-6337] Maven Bundle Plugin generates incorrect Provide-Capability
diff --git a/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java b/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
index 136acb2..55eae79 100644
--- a/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
+++ b/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
@@ -1214,19 +1214,33 @@
String header = attributes.getValue( name );
if ( header != null )
{
- Map<String, Map<String, String>> params = OSGiHeader.parseHeader( header, null ).toBasic();
- Map<String, Map<String, String>> sorted = new TreeMap<>();
- for ( Map.Entry<String, Map<String, String>> entry : params.entrySet() )
+ Parameters parameters = OSGiHeader.parseHeader(header, null);
+ Parameters sorted = new Parameters();
+ for ( Entry<String, Attrs> entry : parameters.entrySet() )
{
- String key = entry.getKey();
- Map<String, String> attrs = entry.getValue();
- Map<String, String> newAttrs = new TreeMap<>(
- Comparator.<String, Boolean>comparing( s -> !s.endsWith( ":" ) ).thenComparing( s -> s ) );
- newAttrs.putAll( attrs );
- sorted.put( key, newAttrs );
+ {
+ String key = entry.getKey();
+ Map<String, String> attrs = entry.getValue();
+ Map<String, String> newAttrs = new TreeMap<>(
+ Comparator.<String, Boolean>comparing( s -> !s.endsWith(":") ).thenComparing( s -> s ) );
+ newAttrs.putAll( attrs );
+ Attrs sortedAttrs = new Attrs();
+ newAttrs.forEach( (k, v) ->
+ {
+ if ( v.contains( "," ) )
+ {
+ sortedAttrs.putTyped( k, v.split( "," ) );
+ }
+ else
+ {
+ sortedAttrs.putTyped( k, v );
+ }
+ });
+ sorted.put( key, sortedAttrs );
+ }
+ String nh = sorted.toString();
+ attributes.putValue( name, nh );
}
- String nh = new Parameters( sorted ).toString();
- attributes.putValue( name, nh );
}
}