View Javadoc

1   /**
2    * Redistribution and use of this software and associated documentation
3    * ("Software"), with or without modification, are permitted provided
4    * that the following conditions are met:
5    *
6    * 1. Redistributions of source code must retain copyright
7    *    statements and notices.  Redistributions must also contain a
8    *    copy of this document.
9    *
10   * 2. Redistributions in binary form must reproduce the
11   *    above copyright notice, this list of conditions and the
12   *    following disclaimer in the documentation and/or other
13   *    materials provided with the distribution.
14   *
15   * 3. The name "Exolab" must not be used to endorse or promote
16   *    products derived from this Software without prior written
17   *    permission of Intalio, Inc.  For written permission,
18   *    please contact info@codehaus.org.
19   *
20   * 4. Products derived from this Software may not be called "Exolab"
21   *    nor may "Exolab" appear in their names without prior written
22   *    permission of Intalio, Inc. Exolab is a registered
23   *    trademark of Intalio, Inc.
24   *
25   * 5. Due credit should be given to the Exolab Project
26   *    (http://www.codehaus.org/).
27   *
28   * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS
29   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
32   * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39   * OF THE POSSIBILITY OF SUCH DAMAGE.
40   *
41   * Copyright 1999 (C) Intalio, Inc. All Rights Reserved.
42   *
43   * $Id$
44   */
45  
46  package org.codehaus.modello.plugin.java.javasource;
47  
48  /*
49   * Copyright (c) 2004, Codehaus.org
50   *
51   * Permission is hereby granted, free of charge, to any person obtaining a copy of
52   * this software and associated documentation files (the "Software"), to deal in
53   * the Software without restriction, including without limitation the rights to
54   * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
55   * of the Software, and to permit persons to whom the Software is furnished to do
56   * so, subject to the following conditions:
57   *
58   * The above copyright notice and this permission notice shall be included in all
59   * copies or substantial portions of the Software.
60   *
61   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
62   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
63   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
64   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
65   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
66   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
67   * SOFTWARE.
68   */
69  
70  /**
71   * Represents a parameter to a JMethod.
72   * @author <a href="mailto:kvisco@intalio.com">Keith Visco</a>
73   * @version $Revision$ $Date$
74   **/
75  public class JParameter
76  {
77  
78      /**
79       * The type associated with this JParameter
80       **/
81      private JType type = null;
82  
83      /**
84       * The name of this JParameter
85       **/
86      private String name = null;
87  
88      private JAnnotations annotations = null;
89  
90      /**
91       * Creates a new JParameter with the given type, and name
92       * @param type the type to associate with this JParameter
93       * @param name the name of the JParameter
94       **/
95      public JParameter( JType type, String name )
96          throws IllegalArgumentException
97      {
98          super();
99          setType( type );
100         setName( name );
101     } //-- JParameter
102 
103     /**
104      * Returns the name of the parameter
105      * @return the name of the parameter
106      **/
107     public String getName()
108     {
109         return this.name;
110     } //-- getName
111 
112     /**
113      * Returns the parameter type
114      * @return the parameter type
115      **/
116     public JType getType()
117     {
118         return this.type;
119     } //-- getType
120 
121     /**
122      * Sets the name of this parameter
123      * @param name the new name of the parameter
124      **/
125     public void setName( String name )
126     {
127         this.name = name;
128     } //-- setName
129 
130     /**
131      * Sets the type of this parameter
132      * @param type the new type of this parameter
133      **/
134     public void setType( JType type )
135         throws IllegalArgumentException
136     {
137         if ( type == null )
138         {
139             String err = "A Parameter cannot have a null type.";
140             throw new IllegalArgumentException( err );
141         }
142         this.type = type;
143     } //-- setType
144 
145     /**
146      * Returns the String representation of this JParameter. The
147      * String returns will consist of the String representation
148      * of the parameter type, followed by the name of the parameter
149      * @return the String representation of this JParameter
150      **/
151     public String toString()
152     {
153         StringBuffer sb = new StringBuffer();
154         if ( annotations != null )
155         {
156             sb.append( annotations.toString() );
157             sb.append( ' ' );
158         }
159         sb.append( this.type.toString() );
160         sb.append( ' ' );
161         sb.append( this.name );
162         return sb.toString();
163     } //-- toString
164 
165     /**
166      * @return the annotations
167      */
168     public JAnnotations getAnnotations()
169     {
170         return annotations;
171     }
172 
173     /**
174      * @param annotation the annotation to append
175      */
176     public void appendAnnotation( String annotation )
177     {
178         if ( annotations == null )
179         {
180             annotations = new JAnnotations();
181         }
182         annotations.appendAnnotation( annotation );
183     }
184 
185     /**
186      * @param annotations the annotations to set
187      */
188     public void setAnnotations( JAnnotations annotations )
189     {
190         this.annotations = annotations;
191     }
192 
193 } //-- JParamater