
io.vertx.up.uca.di.DiGuiceMethod Maven / Gradle / Ivy
package io.vertx.up.uca.di;
import com.google.inject.AbstractModule;
import javax.inject.Inject;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
/**
* @author Lang
*/
@SuppressWarnings("all")
public class DiGuiceMethod implements DiGuice {
private final transient Set> pointers = new HashSet<>();
@Override
public boolean success(final Class> clazz) {
// Get all Method
final Method[] methods = clazz.getDeclaredMethods();
return Arrays.stream(methods)
.filter(method -> !Modifier.isStatic(method.getModifiers())) // Ko Static
.filter(method -> !Modifier.isPublic(method.getModifiers())) // Ko Non-Public
.filter(method -> 0 < method.getParameterCount()) // Ko ()
.filter(method -> method.isAnnotationPresent(Inject.class)) // JSR 330
.anyMatch(method -> {
final Class>[] parameters = method.getParameterTypes();
this.pointers.addAll(Arrays.asList(parameters));
return true;
});
}
@Override
public AbstractModule module(final ConcurrentMap, Set>> tree,
final Set> flat) {
return new AbstractModule() {
@Override
protected void configure() {
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy