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

io.vertx.up.uca.di.DiGuiceMethod Maven / Gradle / Ivy

There is a newer version: 0.9.0
Show newest version
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