1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.apache.felix.bundleplugin;
16
17
18 import java.util.HashMap;
19 import java.util.HashSet;
20 import java.util.Iterator;
21 import java.util.Map;
22 import java.util.Set;
23
24 import org.apache.maven.artifact.Artifact;
25
26
27
28
29
30
31
32
33 public class BundleInfo
34 {
35
36
37
38
39 private Map<String, Set<Artifact>> m_exportedPackages = new HashMap<String, Set<Artifact>>();
40
41
42 public void addExportedPackage( String packageName, Artifact artifact )
43 {
44 Set<Artifact> artifacts = getExportedPackages().get( packageName );
45 if ( artifacts == null )
46 {
47 artifacts = new HashSet<Artifact>();
48 m_exportedPackages.put( packageName, artifacts );
49 }
50 artifacts.add( artifact );
51 }
52
53
54 protected Map<String, Set<Artifact>> getExportedPackages()
55 {
56 return m_exportedPackages;
57 }
58
59
60
61
62
63
64
65 public Map<String, Set<Artifact>> getDuplicatedExports()
66 {
67 Map<String, Set<Artifact>> duplicatedExports = new HashMap<String, Set<Artifact>>();
68
69 for ( Iterator<Map.Entry<String, Set<Artifact>>> it = getExportedPackages().entrySet().iterator(); it.hasNext(); )
70 {
71 Map.Entry<String, Set<Artifact>> entry = it.next();
72 Set<Artifact> artifacts = entry.getValue();
73 if ( artifacts.size() > 1 )
74 {
75
76 Set<String> artifactKeys = new HashSet<String>();
77
78 String packageName = entry.getKey();
79 for ( Iterator<Artifact> it2 = artifacts.iterator(); it2.hasNext(); )
80 {
81 Artifact artifact = it2.next();
82 artifactKeys.add( artifact.getGroupId() + "." + artifact.getArtifactId() );
83 }
84
85 if ( artifactKeys.size() > 1 )
86 {
87 duplicatedExports.put( packageName, artifacts );
88 }
89 }
90 }
91
92 return duplicatedExports;
93 }
94
95
96 public void merge( BundleInfo bundleInfo )
97 {
98 for ( Iterator<Map.Entry<String, Set<Artifact>>> it = bundleInfo.getExportedPackages().entrySet().iterator(); it.hasNext(); )
99 {
100 Map.Entry<String, Set<Artifact>> entry = it.next();
101 String packageName = entry.getKey();
102 Set<Artifact> artifacts = entry.getValue();
103
104 Set<Artifact> artifactsWithPackage = getExportedPackages().get( packageName );
105 if ( artifactsWithPackage == null )
106 {
107 artifactsWithPackage = new HashSet<Artifact>();
108 getExportedPackages().put( packageName, artifactsWithPackage );
109 }
110 artifactsWithPackage.addAll( artifacts );
111 }
112 }
113 }