package org.springframework.roo.classpath.layers; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.tuple.MutablePair; import org.springframework.roo.model.JavaSymbolName; import org.springframework.roo.model.JavaType; /** * A parameter being passed to a layer method. * * @author Andrew Swan * @since 1.2.0 */ public class MethodParameter extends MutablePair<JavaType, JavaSymbolName> { private static final long serialVersionUID = -3652851128787182692L; /** * Converts the given list of pairs to a list of {@link MethodParameter}s * * @param parameters the pairs to convert (can be <code>null</code>) * @return */ public static List<MethodParameter> asList( final List<MutablePair<JavaType, JavaSymbolName>> parameters) { final List<MethodParameter> list = new ArrayList<MethodParameter>(); if (parameters != null) { for (final MutablePair<JavaType, JavaSymbolName> parameter : parameters) { list.add(new MethodParameter(parameter.getKey(), parameter.getValue())); } } return list; } private final JavaType type; private final JavaSymbolName name; /** * Constructor. * * @param type the parameter's type (required) * @param name the parameter's name (required) */ public MethodParameter(final JavaType type, final JavaSymbolName name) { Validate.notNull(type, "Parameter type is required"); Validate.notNull(name, "Parameter name is required"); this.type = type; this.name = name; } /** * Constructor * * @param type the parameter's type (required) * @param name the parameter's name (required) */ public MethodParameter(final JavaType type, final String name) { this(type, new JavaSymbolName(name)); } @Override public JavaType getLeft() { return type; } @Override public JavaSymbolName getRight() { return name; } @Override public void setLeft(final JavaType left) { throw new UnsupportedOperationException(); } @Override public void setRight(final JavaSymbolName right) { throw new UnsupportedOperationException(); } @Override public JavaSymbolName setValue(final JavaSymbolName value) { throw new UnsupportedOperationException(); } @Override public String toString() { final StringBuilder builder = new StringBuilder(); builder.append("key: ").append(type.getFullyQualifiedTypeName()); builder.append(", value: ").append(name.getSymbolName()); return builder.toString(); } }