01: /*******************************************************************************
02: * Copyright (c) 2005, 2007 BEA Systems, Inc.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * tyeung@bea.com - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.apt.core.internal.declaration;
11:
12: import com.sun.mirror.declaration.MethodDeclaration;
13: import com.sun.mirror.declaration.ParameterDeclaration;
14: import com.sun.mirror.type.TypeMirror;
15: import com.sun.mirror.util.DeclarationVisitor;
16:
17: import org.eclipse.jdt.apt.core.internal.env.BaseProcessorEnv;
18: import org.eclipse.jdt.apt.core.internal.util.Factory;
19: import org.eclipse.jdt.core.dom.IMethodBinding;
20: import org.eclipse.jdt.core.dom.ITypeBinding;
21:
22: public class MethodDeclarationImpl extends ExecutableDeclarationImpl
23: implements MethodDeclaration {
24: public MethodDeclarationImpl(final IMethodBinding binding,
25: final BaseProcessorEnv env) {
26: super (binding, env);
27: assert !binding.isConstructor() : "binding does not represent a method."; //$NON-NLS-1$
28: }
29:
30: public TypeMirror getReturnType() {
31: final IMethodBinding methodBinding = getDeclarationBinding();
32: final ITypeBinding retType = methodBinding.getReturnType();
33: final TypeMirror type = Factory.createTypeMirror(retType, _env);
34: if (type == null)
35: return Factory.createErrorClassType(retType);
36: return type;
37: }
38:
39: public void accept(DeclarationVisitor visitor) {
40: visitor.visitMethodDeclaration(this );
41: }
42:
43: public MirrorKind kind() {
44: return MirrorKind.METHOD;
45: }
46:
47: public String toString() {
48: final StringBuilder buffer = new StringBuilder();
49: final IMethodBinding methodBinding = getDeclarationBinding();
50: final ITypeBinding[] typeParams = methodBinding
51: .getTypeParameters();
52: if (typeParams != null && typeParams.length > 0) {
53: buffer.append('<');
54: for (int i = 0; i < typeParams.length; i++) {
55: if (i != 0)
56: buffer.append(", "); //$NON-NLS-1$
57: buffer.append(typeParams[i]);
58: }
59: buffer.append('>');
60: }
61:
62: if (methodBinding.getReturnType() != null)
63: buffer.append(methodBinding.getReturnType().getName());
64: buffer.append(' ');
65: buffer.append(methodBinding.getName());
66: buffer.append('(');
67: int i = 0;
68: for (ParameterDeclaration param : getParameters()) {
69: if (i++ != 0)
70: buffer.append(", "); //$NON-NLS-1$
71: buffer.append(param);
72: }
73: buffer.append(')');
74:
75: return buffer.toString();
76: }
77: }
|