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     * Describes a build extension to utilise.
010     * 
011     * @version $Revision$ $Date$
012     */
013    @SuppressWarnings( "all" )
014    public class Extension
015        implements java.io.Serializable, java.lang.Cloneable, org.apache.maven.model.InputLocationTracker
016    {
017    
018          //--------------------------/
019         //- Class/Member Variables -/
020        //--------------------------/
021    
022        /**
023         * The group ID of the extension's artifact.
024         */
025        private String groupId;
026    
027        /**
028         * The artifact ID of the extension.
029         */
030        private String artifactId;
031    
032        /**
033         * The version of the extension.
034         */
035        private String version;
036    
037        /**
038         * Field locations.
039         */
040        private java.util.Map<Object, InputLocation> locations;
041    
042    
043          //-----------/
044         //- Methods -/
045        //-----------/
046    
047        /**
048         * Method clone.
049         * 
050         * @return Extension
051         */
052        public Extension clone()
053        {
054            try
055            {
056                Extension copy = (Extension) super.clone();
057    
058                if ( copy.locations != null )
059                {
060                    copy.locations = new java.util.LinkedHashMap( copy.locations );
061                }
062    
063                return copy;
064            }
065            catch ( java.lang.Exception ex )
066            {
067                throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
068                    + " does not support clone()" ).initCause( ex );
069            }
070        } //-- Extension clone()
071    
072        /**
073         * Get the artifact ID of the extension.
074         * 
075         * @return String
076         */
077        public String getArtifactId()
078        {
079            return this.artifactId;
080        } //-- String getArtifactId()
081    
082        /**
083         * Get the group ID of the extension's artifact.
084         * 
085         * @return String
086         */
087        public String getGroupId()
088        {
089            return this.groupId;
090        } //-- String getGroupId()
091    
092        /**
093         * 
094         * 
095         * @param key
096         * @return InputLocation
097         */
098        public InputLocation getLocation( Object key )
099        {
100            return ( locations != null ) ? locations.get( key ) : null;
101        } //-- InputLocation getLocation( Object )
102    
103        /**
104         * Get the version of the extension.
105         * 
106         * @return String
107         */
108        public String getVersion()
109        {
110            return this.version;
111        } //-- String getVersion()
112    
113        /**
114         * Set the artifact ID of the extension.
115         * 
116         * @param artifactId
117         */
118        public void setArtifactId( String artifactId )
119        {
120            this.artifactId = artifactId;
121        } //-- void setArtifactId( String )
122    
123        /**
124         * Set the group ID of the extension's artifact.
125         * 
126         * @param groupId
127         */
128        public void setGroupId( String groupId )
129        {
130            this.groupId = groupId;
131        } //-- void setGroupId( String )
132    
133        /**
134         * 
135         * 
136         * @param key
137         * @param location
138         */
139        public void setLocation( Object key, InputLocation location )
140        {
141            if ( location != null )
142            {
143                if ( this.locations == null )
144                {
145                    this.locations = new java.util.LinkedHashMap<Object, InputLocation>();
146                }
147                this.locations.put( key, location );
148            }
149        } //-- void setLocation( Object, InputLocation )
150    
151        /**
152         * Set the version of the extension.
153         * 
154         * @param version
155         */
156        public void setVersion( String version )
157        {
158            this.version = version;
159        } //-- void setVersion( String )
160    
161        
162                
163        /**
164         * @see java.lang.Object#equals(java.lang.Object)
165         */
166        public boolean equals( Object o )
167        {
168            if ( this == o )
169            {
170                return true;
171            }
172    
173            if ( !( o instanceof Extension ) )
174            {
175                return false;
176            }
177    
178            Extension e = (Extension) o;
179    
180            if ( !equal( e.getArtifactId(), getArtifactId() ) )
181            {
182                return false;
183            }
184            else if ( !equal( e.getGroupId(), getGroupId() ) )
185            {
186                return false;
187            }
188            else if ( !equal( e.getVersion(), getVersion() ) )
189            {
190                return false;
191            }
192            return true;
193        }
194    
195        private static <T> boolean equal( T obj1, T obj2 )
196        {
197            return ( obj1 != null ) ? obj1.equals( obj2 ) : obj2 == null;
198        }
199    
200        /**
201         * @see java.lang.Object#hashCode()
202         */
203        public int hashCode()
204        {
205            int result = 17;
206            result = 37 * result + ( getArtifactId() != null ? getArtifactId().hashCode() : 0 );
207            result = 37 * result + ( getGroupId() != null ? getGroupId().hashCode() : 0 );
208            result = 37 * result + ( getVersion() != null ? getVersion().hashCode() : 0 );
209            return result;
210        }
211                
212              
213    }