package com.acme.beanrequires;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
import org.jboss.seam.solder.reflection.Reflections;
public class RequiresExtension implements Extension {
<X> void processAnnotatedType(@Observes ProcessAnnotatedType<X> event) {
AnnotatedType<X> type = event.getAnnotatedType();
if (type.isAnnotationPresent(Requires.class)) {
for (String required : type.getAnnotation(Requires.class).value()) {
try {
Reflections.classForName(required, type.getJavaClass().getClassLoader());
} catch (ClassNotFoundException e) {
event.veto();
}
}
}
}
}