1 package org.apache.maven.plugin;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.model.Plugin;
23 import org.apache.maven.plugin.descriptor.PluginDescriptor;
24 import org.codehaus.plexus.component.discovery.ComponentDiscoveryEvent;
25 import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener;
26 import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
27 import org.codehaus.plexus.logging.AbstractLogEnabled;
28
29 import java.util.HashMap;
30 import java.util.HashSet;
31 import java.util.Iterator;
32 import java.util.Map;
33 import java.util.Set;
34
35 public class MavenPluginCollector
36 extends AbstractLogEnabled
37 implements ComponentDiscoveryListener
38 {
39
40 private Set pluginsInProcess = new HashSet();
41
42 private Map pluginDescriptors = new HashMap();
43
44 private Map pluginIdsByPrefix = new HashMap();
45
46
47
48
49 public void componentDiscovered( ComponentDiscoveryEvent event )
50 {
51 ComponentSetDescriptor componentSetDescriptor = event.getComponentSetDescriptor();
52
53 if ( componentSetDescriptor instanceof PluginDescriptor )
54 {
55 PluginDescriptor pluginDescriptor = (PluginDescriptor) componentSetDescriptor;
56
57 String key = PluginUtils.constructVersionedKey( pluginDescriptor );
58
59 if ( !pluginsInProcess.contains( key ) )
60 {
61 pluginsInProcess.add( key );
62
63 pluginDescriptors.put( key, pluginDescriptor );
64
65
66
67 if ( !pluginIdsByPrefix.containsKey( pluginDescriptor.getGoalPrefix() ) )
68 {
69 pluginIdsByPrefix.put( pluginDescriptor.getGoalPrefix(), pluginDescriptor );
70 }
71 }
72 }
73 }
74
75 public PluginDescriptor getPluginDescriptor( Plugin plugin )
76 {
77 String key = PluginUtils.constructVersionedKey( plugin );
78 return (PluginDescriptor) pluginDescriptors.get( key );
79 }
80
81 public boolean isPluginInstalled( Plugin plugin )
82 {
83 String key = PluginUtils.constructVersionedKey( plugin );
84 return pluginDescriptors.containsKey( key );
85 }
86
87 public PluginDescriptor getPluginDescriptorForPrefix( String prefix )
88 {
89 return (PluginDescriptor) pluginIdsByPrefix.get( prefix );
90 }
91
92 public void flushPluginDescriptor( Plugin plugin )
93 {
94 String key = PluginUtils.constructVersionedKey( plugin );
95 pluginsInProcess.remove( key );
96 pluginDescriptors.remove( key );
97
98 for ( Iterator it = pluginIdsByPrefix.entrySet().iterator(); it.hasNext(); )
99 {
100 Map.Entry entry = (Map.Entry) it.next();
101
102 if ( key.equals( PluginUtils.constructVersionedKey( (PluginDescriptor) entry.getValue() ) ) )
103 {
104 it.remove();
105 }
106 }
107 }
108
109 }