package com.buschmais.xo.spi.reflection;
import com.buschmais.xo.api.XOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
/**
* Represents a set method.
*/
public class SetPropertyMethod extends AbstractPropertyMethod {
private final GetPropertyMethod getter;
/**
* Constructor.
*
* @param setter The set method.
* @param getter The corresponding {@link GetPropertyMethod}.
* @param name The name of the property.
* @param type The type of the property.
*/
public SetPropertyMethod(Method setter, GetPropertyMethod getter, String name, Class<?> type, Type genericType) {
super(setter, name, type, genericType);
if (getter == null) {
throw new XOException("No getter defined for property '" + name + "' of type '" + type.getName() + "' in type '" + setter.getDeclaringClass().getName() + "'.");
}
this.getter = getter;
}
@Override
public <T extends Annotation> T getAnnotationOfProperty(Class<T> type) {
return getter.getAnnotation(type);
}
@Override
public <T extends Annotation> T getByMetaAnnotationOfProperty(Class<T> type) {
return getter.getByMetaAnnotation(type);
}
@Override
public Annotation[] getAnnotationsOfProperty() {
return getter.getAnnotationsOfProperty();
}
}