Package org.springframework.roo.classpath.layers

Source Code of org.springframework.roo.classpath.layers.MethodParameter

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();
    }
}
TOP

Related Classes of org.springframework.roo.classpath.layers.MethodParameter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.