/*******************************************************************************
* Copyright (c) 2011 Codehaus.org, SpringSource, 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:
* Andrew Eisenberg - Initial implemenation
*******************************************************************************/
package org.codehaus.groovy.eclipse.dsl.contributions;
import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.Parameter;
import org.codehaus.groovy.eclipse.dsl.lookup.ResolverCache;
/**
* a parameter of a method contribution
* @author andrew
* @created Nov 17, 2010
*/
public class ParameterContribution {
final String name;
final String type;
private Parameter cachedParameter;
public ParameterContribution(String name, String type) {
this.name = name;
this.type = type;
}
public ParameterContribution(Parameter cachedParameter) {
this.cachedParameter = cachedParameter;
this.name = cachedParameter.getName();
this.type = DSLContributionGroup.getTypeName(cachedParameter.getType());
}
public ParameterContribution(String name) {
this.name = name;
this.type = null;
}
public Parameter toParameter(ResolverCache resolver) {
if (cachedParameter == null) {
if (resolver != null) {
cachedParameter = new Parameter(resolver.resolve(type), name);
} else {
cachedParameter = new Parameter(ClassHelper.DYNAMIC_TYPE, name);
}
}
return cachedParameter;
}
@Override
public String toString() {
return type + " " + name;
}
}