/******************************************************************************* * Copyright (c) 2007, 2008 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Kaloyan Raev, kaloyan.raev@sap.com - initial API and implementation *******************************************************************************/ package org.eclipse.jst.j2ee.internal.common.operations; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.Modifier; import org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.eclipse.jdt.core.dom.Type; public class SourceConstructor implements Constructor { private MethodDeclaration method; public SourceConstructor(MethodDeclaration method) { this.method = method; } /** * @see Constructor#isParameterless() */ public boolean isParameterless() { return method.parameters().size() == 0; } /** * @see Constructor#isPublic() */ public boolean isPublic() { int modifiers = method.getModifiers(); return Modifier.isPublic(modifiers); } /** * @see Constructor#isProtected() */ public boolean isProtected() { int modifiers = method.getModifiers(); return Modifier.isProtected(modifiers); } /** * @see Constructor#getParamsForCall() */ public String getParamsForCall() { return this.getParams(false, true); } /** * @see Constructor#getParamsForDeclaration() */ public String getParamsForDeclaration() { return this.getParams(true, true); } /** * @see Constructor#getParamsForJavadoc() */ public String getParamsForJavadoc() { return this.getParams(true, false); } /** * @see Constructor#getNonPrimitiveParameterTypes() */ @SuppressWarnings("unchecked") public List<String> getNonPrimitiveParameterTypes() { List<String> result = new ArrayList<String>(); List<SingleVariableDeclaration> parameters = method.parameters(); for (SingleVariableDeclaration parameter : parameters) { Type type = parameter.getType(); if (!type.isPrimitiveType()) { ITypeBinding binding = type.resolveBinding(); if (binding != null) result.add(binding.getQualifiedName()); } } return result; } @SuppressWarnings("unchecked") private String getParams(boolean types, boolean names) { StringBuilder result = new StringBuilder(); Iterator<SingleVariableDeclaration> iterator = method.parameters().iterator(); while (iterator.hasNext()) { SingleVariableDeclaration parameter = iterator.next(); if (types) result.append(parameter.getType()); if (types && names) result.append(" "); //$NON-NLS-1$ if (names) result.append(parameter.getName()); if (iterator.hasNext()) result.append(", "); //$NON-NLS-1$ } return result.toString(); } }