package org.jboss.capedwarf.admin;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import javax.enterprise.inject.spi.Extension;
/**
* Register admin console beans.
*
* @author <a href="mailto:ales.justin@jboss.org">Ales Justin</a>
* @author <a href="mailto:mluksa@redhat.com">Marko Luksa</a>
*/
public class AdminExtension implements Extension {
/**
* Register all admin CDI beans.
*
* @param bbd the bbd event
* @param bm the bean manager
*/
public void register(@Observes BeforeBeanDiscovery bbd, BeanManager bm) {
addAnnotatedType(bbd, bm, AdminConsolePagesProducer.class);
addAnnotatedType(bbd, bm, Capabilities.class);
addAnnotatedType(bbd, bm, CustomAdminPage.class);
addAnnotatedType(bbd, bm, DatastoreEditViewer.class);
addAnnotatedType(bbd, bm, DatastoreEntityViewer.class);
addAnnotatedType(bbd, bm, DatastoreViewer.class);
addAnnotatedType(bbd, bm, DatastoreStatistics.class);
addAnnotatedType(bbd, bm, Modules.class);
addAnnotatedType(bbd, bm, Search.class);
addAnnotatedType(bbd, bm, SearchDocument.class);
addAnnotatedType(bbd, bm, SearchIndex.class);
addAnnotatedType(bbd, bm, TaskQueues.class);
addAnnotatedType(bbd, bm, TaskQueue.class);
addAnnotatedType(bbd, bm, HttpParamProducer.class);
addAnnotatedType(bbd, bm, LogViewer.class);
addAnnotatedType(bbd, bm, TimeFormatter.class);
addAnnotatedType(bbd, bm, SizeFormatter.class);
addAnnotatedType(bbd, bm, ContextPathProducer.class);
addAnnotatedType(bbd, bm, CronJobs.class);
}
private <E> void addAnnotatedType(BeforeBeanDiscovery bbd, BeanManager bm, Class<E> clazz) {
final AnnotatedType<E> dev = bm.createAnnotatedType(clazz);
bbd.addAnnotatedType(dev);
}
}