KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > go > teatools > MethodDescription


1 /* ====================================================================
2  * TeaTools - Copyright (c) 1997-2000 GO.com
3  * ====================================================================
4  * The Tea Software License, Version 1.0
5  *
6  * Copyright (c) 2000 GO.com. All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by GO.com
23  * (http://opensource.go.com/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Tea", "TeaServlet", "Kettle", "Trove" and "GO.com" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact opensource@go.com.
31  *
32  * 5. Products derived from this software may not be called "Tea",
33  * "TeaServlet", "Kettle" or "Trove", nor may "Tea", "TeaServlet",
34  * "Kettle" or "Trove" appear in their name, without prior written
35  * permission of GO.com.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL GO.COM OR ITS CONTRIBUTORS BE LIABLE
41  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
42  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
43  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
44  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
45  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
46  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
47  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48  * ====================================================================
49  *
50  * For more information about Tea, please see http://opensource.go.com/.
51  */

52
53 package com.go.teatools;
54
55 import com.go.trove.classfile.AccessFlags;
56
57 import java.beans.*;
58 import java.lang.reflect.*;
59
60 /******************************************************************************
61  * Wrapper for a MethodDescriptor object.
62  *
63  * @author Mark Masse
64  * @version
65  * <!--$$Revision:--> 3 <!-- $-->, <!--$$JustDate:--> 11/14/00 <!-- $-->
66  */

67 public class MethodDescription extends FeatureDescription {
68
69     private MethodDescriptor mMethodDescriptor;
70
71     private TypeDescription mReturnType;
72     private ParameterDescription[] mParams;
73
74     /**
75      * Creates a new MethodDescription
76      */

77     public MethodDescription(MethodDescriptor md, TeaToolsUtils utils) {
78         super(utils);
79         mMethodDescriptor = md;
80     }
81
82     /**
83      * Returns the MethodDescriptor
84      */

85     public MethodDescriptor getMethodDescriptor() {
86         return mMethodDescriptor;
87     }
88
89     /**
90      * Returns the Method
91      */

92     public Method getMethod() {
93         return getMethodDescriptor().getMethod();
94     }
95
96     /**
97      * Returns a AccessFlags instance that can be used to check the type's
98      * modifiers.
99      */

100     public AccessFlags getAccessFlags() {
101         return getTeaToolsUtils().getAccessFlags(getMethod().getModifiers());
102     }
103     
104     /**
105      * Returns the method's return type
106      */

107     public TypeDescription getReturnType() {
108         if (mReturnType == null) {
109             mReturnType =
110                 getTeaToolsUtils().createTypeDescription(
111                                           getMethod().getReturnType());
112         }
113
114         return mReturnType;
115     }
116
117     /**
118      * Returns the method's parameters
119      */

120     public ParameterDescription[] getParameters() {
121         if (mParams == null) {
122             
123             mParams = getTeaToolsUtils().createParameterDescriptions(
124                                                         getMethodDescriptor());
125         }
126
127         return mParams;
128     }
129
130     /**
131      * Returns true if the specified method accepts a
132      * <code>Substitution</code> as its last parameter.
133      */

134     public boolean getAcceptsSubstitution() {
135         return getTeaToolsUtils().acceptsSubstitution(getMethodDescriptor());
136     }
137
138     //
139
// FeatureDescription methods
140
//
141

142     public FeatureDescriptor getFeatureDescriptor() {
143         return getMethodDescriptor();
144     }
145
146     public String JavaDoc getShortFormat() {
147
148         StringBuffer JavaDoc format = new StringBuffer JavaDoc();
149         format.append(getName());
150         format.append('(');
151         ParameterDescription[] params = getParameters();
152         for (int i = 0; i < params.length; i++) {
153             format.append(params[i].getShortFormat());
154             if (i < (params.length - 1)) {
155                 format.append(", ");
156             }
157         }
158
159         format.append(')');
160
161         return format.toString();
162     }
163
164     public String JavaDoc getLongFormat() {
165         StringBuffer JavaDoc format = new StringBuffer JavaDoc();
166
167         format.append(getReturnType().getLongFormat());
168         format.append(getName());
169         format.append('(');
170         ParameterDescription[] params = getParameters();
171         for (int i = 0; i < params.length; i++) {
172             format.append(params[i].getLongFormat());
173             if (i < (params.length - 1)) {
174                 format.append(", ");
175             }
176         }
177
178         format.append(')');
179
180         return format.toString();
181     }
182
183     
184
185 }
186
187
188
Popular Tags