package angularBeans.boot;
import java.util.HashSet;
import java.util.Set;
import angularBeans.ngservices.NGService;
import angularBeans.util.NGBean;
/**
* used by:
* <p>-AngularBeansServletContextListenerAnnotated
* <p>-ModuleGenerator
* <p>-AngularBeansCDIExtention
* The BeanRegistry is used to store CDI beans info detected at deployment
* time to boost javascript generation performances later on the ModuleGenerator
* (pre generated and compressed js)
*<p>
*it will store specific CDI beans definitions:
*'@AngularBeans' (as wrapped NGBean)
*, angularBeans built-in angularJs services (NGService)
*, the '@NGApp' definition
*<p>
*combined with specific beans dependent javascript part's (related to RPC methods call)
*will produce the final "angular-beans.js" script.
* @author bessem hmidi
*/
public enum BeanRegistry {
INSTANCE;
private Set<NGBean> angularBeans;
private Set<NGService> extentions;
private Class<? extends Object> appClass;
private BeanRegistry(){
if(angularBeans == null) angularBeans = new HashSet<>();
if(extentions == null) extentions = new HashSet<>();
}
public void registerApp(Class<? extends Object> appClass) {
this.appClass = appClass;
}
/**
* Registers the given @AngularBean for script generation.
* @param targetClass
*/
public void registerBean(Class targetClass) {
angularBeans.add(new NGBean(targetClass));
}
public void registerExtention(NGService extention) {
extentions.add(extention);
}
public Set<NGBean> getAngularBeans() {
return angularBeans;
}
public Set<NGService> getExtentions() {
return extentions;
}
public Class<? extends Object> getAppClass() {
return appClass;
}
}