
net.vidageek.mirror.reflect.DefaultAllReflectionHandler Maven / Gradle / Ivy
/**
*
*/
package net.vidageek.mirror.reflect;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
import net.vidageek.mirror.dsl.Matcher;
import net.vidageek.mirror.matcher.GetterMatcher;
import net.vidageek.mirror.matcher.ListFilter;
import net.vidageek.mirror.matcher.SetterMatcher;
import net.vidageek.mirror.provider.ReflectionProvider;
import net.vidageek.mirror.reflect.dsl.AllAnnotationsHandler;
import net.vidageek.mirror.reflect.dsl.AllReflectionHandler;
/**
* This class is responsible for reflecting lists of reflection elements
*
* @author jonasabreu
*/
public final class DefaultAllReflectionHandler implements AllReflectionHandler {
private final Class clazz;
private final ReflectionProvider provider;
public DefaultAllReflectionHandler(final ReflectionProvider provider, final Class clazz) {
if (clazz == null) {
throw new IllegalArgumentException("clazz cannot be null");
}
this.provider = provider;
this.clazz = clazz;
}
public List fields() {
return provider.getClassReflectionProvider(clazz).reflectAllFields();
}
public List methods() {
return provider.getClassReflectionProvider(clazz).reflectAllMethods();
}
public List> constructors() {
return provider.getClassReflectionProvider(clazz).reflectAllConstructors();
}
public AllAnnotationsHandler annotations() {
return new DefaultAllAnnotationsHandler(provider, clazz);
}
public List setters() {
return new ListFilter().filter(new SetterMatcher(), methods());
}
public List getters() {
return new ListFilter().filter(new GetterMatcher(), methods());
}
public List fieldsMatching(final Matcher matcher) {
return new ListFilter().filter(matcher, fields());
}
public List methodsMatching(final Matcher matcher) {
return new ListFilter().filter(matcher, methods());
}
public List> constructorsMatching(final Matcher> matcher) {
return new ListFilter().filter(matcher, constructors());
}
public List annotationsMatching(final Matcher matcher) {
return new ListFilter().filter(matcher, annotations().atClass());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy