if(null != typeSet){ for(BeanDefinitionBase bd : typeSet){ if(!Strings.isEmpty(bd.getName())){ if(!bd.isSingleton()){ throw new BeanDefinitionException("the bean '" + bd.getName() + "' must be singleton, cannot cache the named beans for type '" + type.getName() + "'"); beans.put(bd.getName(), (T)doGetBean(bd));
if(!Strings.isEmpty(bd.getNamespace()) && !Strings.isEmpty(bd.getName())) { id = id(bd.getNamespace(), bd.getName()); BeanDefinitionBase existsBeanDefinition = identifiedBeanDefinitions.get(id); if(null != existsBeanDefinition){ throw new BeanDefinitionException("Found duplicated bean namespace '" + bd.getNamespace() + "' and name '" + bd.getName() + "' in resource : " + bd.getSource() + ", " + existsBeanDefinition.getSource());
protected BeanDefinitionBase removeAll(BeanDefinitionBase bd) { if(null != bd) { allBeanDefinitions.remove(bd); if(!Strings.isEmpty(bd.getId())) { identifiedBeanDefinitions.remove(bd.getId()); } if(bd.isPrimary()) { primaryBeanDefinitions.remove(bd.getType()); } if(!Strings.isEmpty(bd.getName())) { namedBeanDefinitions.remove(bd.getType(), bd.getName()); } Set<BeanDefinitionBase> set = beanTypeDefinitions.get(bd.getType()); if(null != set) { Set<BeanDefinitionBase> found = new HashSet<>(); Set<BeanDefinitionBase> notFound = new LinkedHashSet<>(); for (BeanDefinitionBase item : set) { if (item == bd) { found.add(item); } else { notFound.add(item); } } set.clear(); set.addAll(notFound); } } return bd; }
protected boolean isTypedProxy(BeanDefinitionBase pd) { if(!pd.isPrimary() && Strings.isEmpty(pd.getName()) && Strings.isEmpty(pd.getId())) { return true; } return false; }
protected BeanDefinitionBase findProxy(BeanDefinitionBase bd) { BeanDefinitionBase pd; //find by id. if(!Strings.isEmpty(bd.getId())) { pd = bpds.identifiedBeanDefinitions.get(bd.getId()); if(null != pd) { return pd; } } //find by name. if(!Strings.isEmpty(bd.getName())) { pd = bpds.find(bd.getType(), bd.getName()); if(null != pd) { return pd; } } //find by primary. if(bd.isPrimary()) { pd = bpds.primaryBeanDefinitions.get(bd.getType()); if(null != pd) { return pd; } } //find typed proxy. return findTypedProxy(bd); }
protected void doBeanAware(BeanDefinitionBase bd,Object bean){ if(bean instanceof ServletContextAware){ if(appContext.isServletEnvironment()){ ((ServletContextAware) bean).setServletContext(appContext.getServletContext()); } } if(bean instanceof BeanFactoryAware){ ((BeanFactoryAware) bean).setBeanFactory(beanFactory); } if(bean instanceof AppContextAware){ ((AppContextAware) bean).setAppContext(appContext); } if(bean instanceof AppConfigAware){ ((AppConfigAware) bean).setAppConfig(appContext.getConfig()); } //TODO : check the bean name is empty? if(bean instanceof BeanNameAware){ ((BeanNameAware) bean).setBeanName(bd.getName()); } if(bean instanceof BeanPrimaryAware) { ((BeanPrimaryAware) bean).setBeanPrimary(bd.isPrimary()); } }