001package org.apache.maven.plugin.descriptor;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 *  http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022/**
023 * @author Jason van Zyl
024 */
025public class Parameter
026    implements Cloneable
027{
028    private String alias;
029
030    private String name;
031
032    private String type;
033
034    private boolean required;
035
036    private boolean editable = true;
037
038    private String description;
039
040    private String expression;
041
042    private String deprecated;
043
044    private String defaultValue;
045
046    private String implementation;
047
048    private Requirement requirement;
049
050    private String since;
051
052    // ----------------------------------------------------------------------
053    //
054    // ----------------------------------------------------------------------
055
056    public String getName()
057    {
058        return name;
059    }
060
061    public void setName( String name )
062    {
063        this.name = name;
064    }
065
066    public String getType()
067    {
068        return type;
069    }
070
071    public void setType( String type )
072    {
073        this.type = type;
074    }
075
076    public boolean isRequired()
077    {
078        return required;
079    }
080
081    public void setRequired( boolean required )
082    {
083        this.required = required;
084    }
085
086    public String getDescription()
087    {
088        return description;
089    }
090
091    public void setDescription( String description )
092    {
093        this.description = description;
094    }
095
096    public String getExpression()
097    {
098        return expression;
099    }
100
101    public void setExpression( String expression )
102    {
103        this.expression = expression;
104    }
105
106    public String getDeprecated()
107    {
108        return deprecated;
109    }
110
111    public void setDeprecated( String deprecated )
112    {
113        this.deprecated = deprecated;
114    }
115
116    public int hashCode()
117    {
118        return name.hashCode();
119    }
120
121    public boolean equals( Object other )
122    {
123        return ( other instanceof Parameter ) && getName().equals( ( (Parameter) other ).getName() );
124    }
125
126    public String getAlias()
127    {
128        return alias;
129    }
130
131    public void setAlias( String alias )
132    {
133        this.alias = alias;
134    }
135
136    public boolean isEditable()
137    {
138        return editable;
139    }
140
141    public void setEditable( boolean editable )
142    {
143        this.editable = editable;
144    }
145
146    public void setDefaultValue( String defaultValue )
147    {
148        this.defaultValue = defaultValue;
149    }
150
151    public String getDefaultValue()
152    {
153        return defaultValue;
154    }
155
156    public String toString()
157    {
158        return "Mojo parameter [name: \'" + getName() + "\'; alias: \'" + getAlias() + "\']";
159    }
160
161    public Requirement getRequirement()
162    {
163        return requirement;
164    }
165
166    public void setRequirement( Requirement requirement )
167    {
168        this.requirement = requirement;
169    }
170
171    public String getImplementation()
172    {
173        return implementation;
174    }
175
176    public void setImplementation( String implementation )
177    {
178        this.implementation = implementation;
179    }
180
181    public String getSince()
182    {
183        return since;
184    }
185
186    public void setSince( String since )
187    {
188        this.since = since;
189    }
190
191    /**
192     * Creates a shallow copy of this parameter.
193     */
194    @Override
195    public Parameter clone()
196    {
197        try
198        {
199            return (Parameter) super.clone();
200        }
201        catch ( CloneNotSupportedException e )
202        {
203            throw new UnsupportedOperationException( e );
204        }
205    }
206
207}