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

org.rapidpm.ddi.producer.ProducerLocator Maven / Gradle / Ivy

There is a newer version: 1.1.1
Show newest version
package org.rapidpm.ddi.producer;

import org.rapidpm.ddi.DI;
import org.rapidpm.ddi.implresolver.DDIModelException;

import javax.inject.Produces;
import java.util.Iterator;
import java.util.Set;

/**
 * Created by svenruppert on 17.08.15.
 */
public class ProducerLocator {

  public Set> findProducersForInterface(final Class clazzOrInterf) {
    final Set> typesAnnotatedWith = DI.getTypesAnnotatedWith(Produces.class);

    final Iterator> iterator = typesAnnotatedWith.iterator();
    while (iterator.hasNext()) {
      Class producerClass = iterator.next();
      final Produces annotation = (Produces) producerClass.getAnnotation(Produces.class);
      final Class value = annotation.value();
      if (value == null) throw new DDIModelException("Producer without target Interface " + producerClass);
      if (value.equals(clazzOrInterf)) {
        //TODO logger
      } else {
        iterator.remove();
      }
    }
    return typesAnnotatedWith;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy