blob: d143561ef929e5faf841374be7e17b9a6201709b [file] [log] [blame]
/*******************************************************************************
* 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();
}
}