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

io.vertx.up.uca.di.DiGuiceConstructor 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.Constructor;
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 DiGuiceConstructor implements DiGuice {
    private final transient Set> pointers = new HashSet<>();

    @Override
    public boolean success(final Class clazz) {
        // Get all Constructor
        final Constructor[] constructors = clazz.getDeclaredConstructors();
        return Arrays.stream(constructors)
            .filter(constructor -> !Modifier.isPublic(constructor.getModifiers()))   // Ko Non-Public
            .filter(constructor -> 0 < constructor.getParameterCount())              // Ko ()
            .filter(constructor -> constructor.isAnnotationPresent(Inject.class))    // JSR 330
            .anyMatch(constructor -> {
                final Class[] parameters = constructor.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