protected boolean isTypeOf(Class<?> beanType){ if(null != type && type.equals(beanType)) { return true; } for(TypeDefinition td : additionalTypeDefs) { if(td.getType().equals(beanType)) { return true; } } return false; }
Class<?> beanType = type.getType(); if(!Strings.isEmpty(type.getName())){ String key = key(beanType, type.getName()); BeanDefinitionBase existsBeanDefinition = namedBeanDefinitions.get(key); if(existsBeanDefinition != null){ Optional<TypeDefinition> op = existsBeanDefinition.getAdditionalTypeDefs().stream() .filter(td -> td.getType().equals(type.getType())).findAny(); TypeDefinition existTd = op.orElse(existsBeanDefinition); if(!type.isOverride() && !existTd.isOverride()){ throw new BeanDefinitionException("Found duplicated " + (proxy ? "proxy" : "bean") + " name '" + definition.getName() + "' for type '" + beanType.getName() + if(type.isOverride() && !existTd.isOverride()){ namedBeanDefinitions.put(key, bd); }else if(type.isOverride() && existTd.isOverride()){ if(bd.getSortOrder() == existsBeanDefinition.getSortOrder()){ log.warn("Found duplicated name bean " + (proxy ? "proxy " : "bean ") + definition + if(type.isPrimary()){ .filter(td -> td.getType().equals(type.getType())).findAny(); TypeDefinition existTd = op.orElse(existsBeanDefinition); if(!type.isOverride() && !existTd.isOverride()){ throw new BeanDefinitionException("Found duplicated primary " + (proxy ? "proxy " : "bean ") + definition + " for type '" + beanType.getName() +
protected void addNotRepeatAdditionalTypeDef(BeanDefinitionBase bd, Class<?> cls){ for(TypeDefinition def : bd.getAdditionalTypeDefs()){ if(def.getType() == cls){ return; } } TypeDefinitionBase def = new TypeDefinitionBase(); def.setType(cls); bd.addAdditionalTypeDef(def); } }
protected void parseAdditionalTypeDef(BeanDefinitionBase bd,Class<?> cls,Bean a){ if(a.additionalTypeDef() != null && a.additionalTypeDef().length > 0){ typeEach: for(Class<?> additional : a.additionalTypeDef()){ for(TypeDefinition def : bd.getAdditionalTypeDefs()){ if(def.getType() == additional){ continue typeEach; } } if(!additional.isAssignableFrom(cls)){ throw new BeanDefinitionException(additional.getName() + " is not assignable from " + cls.getName()); } TypeDefinitionBase def = new TypeDefinitionBase(); def.setType(additional); bd.addAdditionalTypeDef(def); } } }