package com.impossibl.stencil.engine.cdi;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.CDI;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.impossibl.stencil.api.GlobalScope;
public class CDIGlobals implements GlobalScope {
private static final Logger logger = LogManager.getLogger(CDIGlobals.class);
BeanManager beanManager = CDI.current().getBeanManager();
CreationalContext<?> globalContext = beanManager.createCreationalContext(null);
public CDIGlobals() {
logger.info("Initializing CDI Globals");
}
public Object get(String name) {
Set<Bean<?>> beans = beanManager.getBeans(name);
if(beans.isEmpty()) {
return NOT_FOUND;
}
Bean<?> bean = beanManager.resolve(beans);
return beanManager.getReference(bean, Object.class, globalContext);
}
}