This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new 4c9f671  [FELIX-6337] Maven Bundle Plugin generates incorrect 
Provide-Capability
     new 6f12db3  Merge pull request #58 from Fenrock/felix6337
4c9f671 is described below

commit 4c9f671710b65b94432d3626fd4045a32f0ac083
Author: tadei.bilan <[email protected]>
AuthorDate: Wed Nov 4 12:03:48 2020 +0200

    [FELIX-6337] Maven Bundle Plugin generates incorrect Provide-Capability
---
 .../apache/felix/bundleplugin/BundlePlugin.java    | 38 +++++++++++++++-------
 1 file changed, 26 insertions(+), 12 deletions(-)

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 @@ public class BundlePlugin extends AbstractMojo
         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 nh = new Parameters( sorted ).toString();
-            attributes.putValue( name, nh );
+                {
+                    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 );
+            }
         }
     }
 

Reply via email to