001    // =================== DO NOT EDIT THIS FILE ====================
002    // Generated by Modello 1.7,
003    // any modifications will be overwritten.
004    // ==============================================================
005    
006    package org.apache.maven.model;
007    
008    /**
009     * Contains the plugins informations for the project.
010     * 
011     * @version $Revision$ $Date$
012     */
013    @SuppressWarnings( "all" )
014    public class PluginContainer
015        implements java.io.Serializable, java.lang.Cloneable, org.apache.maven.model.InputLocationTracker
016    {
017    
018          //--------------------------/
019         //- Class/Member Variables -/
020        //--------------------------/
021    
022        /**
023         * Field plugins.
024         */
025        private java.util.List<Plugin> plugins;
026    
027        /**
028         * Field locations.
029         */
030        private java.util.Map<Object, InputLocation> locations;
031    
032    
033          //-----------/
034         //- Methods -/
035        //-----------/
036    
037        /**
038         * Method addPlugin.
039         * 
040         * @param plugin
041         */
042        public void addPlugin( Plugin plugin )
043        {
044            getPlugins().add( plugin );
045        } //-- void addPlugin( Plugin )
046    
047        /**
048         * Method clone.
049         * 
050         * @return PluginContainer
051         */
052        public PluginContainer clone()
053        {
054            try
055            {
056                PluginContainer copy = (PluginContainer) super.clone();
057    
058                if ( this.plugins != null )
059                {
060                    copy.plugins = new java.util.ArrayList<Plugin>();
061                    for ( Plugin item : this.plugins )
062                    {
063                        copy.plugins.add( ( (Plugin) item).clone() );
064                    }
065                }
066    
067                if ( copy.locations != null )
068                {
069                    copy.locations = new java.util.LinkedHashMap( copy.locations );
070                }
071    
072                return copy;
073            }
074            catch ( java.lang.Exception ex )
075            {
076                throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
077                    + " does not support clone()" ).initCause( ex );
078            }
079        } //-- PluginContainer clone()
080    
081        /**
082         * 
083         * 
084         * @param key
085         * @return InputLocation
086         */
087        public InputLocation getLocation( Object key )
088        {
089            return ( locations != null ) ? locations.get( key ) : null;
090        } //-- InputLocation getLocation( Object )
091    
092        /**
093         * Method getPlugins.
094         * 
095         * @return List
096         */
097        public java.util.List<Plugin> getPlugins()
098        {
099            if ( this.plugins == null )
100            {
101                this.plugins = new java.util.ArrayList<Plugin>();
102            }
103    
104            return this.plugins;
105        } //-- java.util.List<Plugin> getPlugins()
106    
107        /**
108         * Method removePlugin.
109         * 
110         * @param plugin
111         */
112        public void removePlugin( Plugin plugin )
113        {
114            getPlugins().remove( plugin );
115        } //-- void removePlugin( Plugin )
116    
117        /**
118         * 
119         * 
120         * @param key
121         * @param location
122         */
123        public void setLocation( Object key, InputLocation location )
124        {
125            if ( location != null )
126            {
127                if ( this.locations == null )
128                {
129                    this.locations = new java.util.LinkedHashMap<Object, InputLocation>();
130                }
131                this.locations.put( key, location );
132            }
133        } //-- void setLocation( Object, InputLocation )
134    
135        /**
136         * Set the list of plugins to use.
137         * 
138         * @param plugins
139         */
140        public void setPlugins( java.util.List<Plugin> plugins )
141        {
142            this.plugins = plugins;
143        } //-- void setPlugins( java.util.List )
144    
145        
146                
147        java.util.Map<String, Plugin> pluginMap;
148    
149        /**
150         * Reset the <code>pluginsMap</code> field to <code>null</code>
151         */
152        public synchronized void flushPluginMap()
153        {
154            this.pluginMap = null;
155        }
156    
157        /**
158         * @return a Map of plugins field with <code>Plugins#getKey()</code> as key
159         * @see org.apache.maven.model.Plugin#getKey()
160         */
161        public synchronized java.util.Map<String, Plugin> getPluginsAsMap()
162        {
163            if ( pluginMap == null )
164            {
165                pluginMap = new java.util.LinkedHashMap<String, Plugin>();
166                if ( plugins != null )
167                {
168                    for ( java.util.Iterator<Plugin> it = plugins.iterator(); it.hasNext(); )
169                    {
170                        Plugin plugin = (Plugin) it.next();
171                        pluginMap.put( plugin.getKey(), plugin );
172                    }
173                }
174            }
175    
176            return pluginMap;
177        }
178                
179              
180    }