View Javadoc

1   package org.codehaus.modello.plugin;
2   
3   /*
4    * Copyright (c) 2004, Codehaus.org
5    *
6    * Permission is hereby granted, free of charge, to any person obtaining a copy of
7    * this software and associated documentation files (the "Software"), to deal in
8    * the Software without restriction, including without limitation the rights to
9    * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
10   * of the Software, and to permit persons to whom the Software is furnished to do
11   * so, subject to the following conditions:
12   *
13   * The above copyright notice and this permission notice shall be included in all
14   * copies or substantial portions of the Software.
15   *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22   * SOFTWARE.
23   */
24  
25  import org.codehaus.modello.ModelloRuntimeException;
26  import org.codehaus.plexus.logging.AbstractLogEnabled;
27  import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
28  
29  import java.util.HashMap;
30  import java.util.Iterator;
31  import java.util.Map;
32  
33  /**
34   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
35   */
36  public abstract class AbstractPluginManager<T>
37      extends AbstractLogEnabled
38      implements Initializable
39  {
40      /* injected by Plexus: see META-INF/plexus/components.xml */
41      private Map<String, T> plugins = new HashMap<String, T>();
42  
43      public void initialize()
44      {
45      }
46  
47      public Map<String, T> getPlugins()
48      {
49          return plugins;
50      }
51  
52      public Iterator<T> getPluginsIterator()
53      {
54          return plugins.values().iterator();
55      }
56  
57      public T getPlugin( String name )
58      {
59          T plugin = plugins.get( name );
60  
61          if ( plugin == null )
62          {
63              throw new ModelloRuntimeException( "No such plugin: " + name );
64          }
65  
66          return plugin;
67      }
68  
69      public boolean hasPlugin( String name )
70      {
71          return plugins.containsKey( name );
72      }
73  }