All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jedi.annotation.processor6.model.MethodDeclarationAdapter Maven / Gradle / Ivy

package jedi.annotation.processor6.model;

import static jedi.functional.FunctionalPrimitives.append;
import static jedi.functional.FunctionalPrimitives.collect;

import java.util.Collection;

import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeParameterElement;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeMirror;

import jedi.annotation.processor.model.Attribute;
import jedi.functional.Functor;

public class MethodDeclarationAdapter extends AbstractMemberDeclarationAdapter {
	public MethodDeclarationAdapter(BoxerFunctor boxer, ExecutableElement element) {
		super(boxer, element);
	}

	@Override
	protected TypeMirror getType() {
		return element.getReturnType();
	}

	@Override
	public Collection getParameters() {
		return collect(element.getParameters(), new Functor() {
			@Override
			public Attribute execute(VariableElement value) {
				return new Attribute(value.asType().toString(), boxer.execute(value.asType()), value.getSimpleName().toString());
			}
		});
	}

	@SuppressWarnings("unchecked")
	private Collection getGenericTypeParameters() {
		return append(element.getTypeParameters(), getDeclaringType().getTypeParameters());
	}

	@Override
	public String renderGenericTypeParameters() {
		return TypeDeclarationRenderer.render(getGenericTypeParameters());
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy