protected void readFactoryDefinition(BeanContainer container, XmlReader reader, LoaderContext context, BeanDefinitionBase bd) { FactoryDefinition fd = new FactoryDefinition(); String className = reader.getRequiredAttribute(CLASS_ATTRIBUTE); if(!Strings.isEmpty(className)) { Class<?> cls = tryForName(className); if(null == cls) { throw new BeanDefinitionException("Invalid factory class name '" + className + "' in " + bd); } readMethodDefinition(reader, context, bd, cls, fd, false); } bd.setFactoryDefinition(fd); }
protected Class<?> classAttribute(XmlReader reader, String name, boolean required) { String value = required ? reader.getRequiredAttribute(name) : reader.getAttribute(name); if (Strings.isEmpty(value)) { return null; } Class<?> clazz = tryForName(value); if (null == clazz) { throw new BeanDefinitionException("invalid class name '" + value + "' in source : " + reader.getSource() + ", line number : " + reader.getLineNumber()); } return clazz; }
protected void readBeanFactoryDef(BeanContainer container, XmlReader reader, LoaderContext context, BeanDefinitionBase bean) { if (!(FactoryBean.class.isAssignableFrom(bean.getBeanClass()))) { throw new BeanDefinitionException("Bean [" + bean + "] must be implements FactoryBean"); } String targetTypeName = reader.getRequiredAttribute(TARGET_TYPE_ATTRIBUTE); if (Strings.isEmpty(targetTypeName)) { throw new BeanDefinitionException("Attribute '" + TARGET_TYPE_ATTRIBUTE + "' of element '" + REGISTER_BEAN_FACTORY_ELEMENT + "' must not be empty, source : " + reader.getSource()); } Class<?> targetType = tryForName(targetTypeName); if (null == targetType) { throw new BeanDefinitionException("Target type '" + targetTypeName + "' not found, source : " + reader.getSource()); } bean.addFactoryBeanDef(new FactoryBeanDefinitionBase(targetType)); }
protected void readBeanTypeDef(BeanContainer container, XmlReader reader, LoaderContext context, BeanDefinitionBase bean) { TypeDefinitionBase def = new TypeDefinitionBase(); String typeClassName = reader.getRequiredAttribute(TYPE_ATTRIBUTE); Class<?> typeClass = tryForName(typeClassName); if (null == typeClass) { throw new BeanDefinitionException("Class '" + typeClassName + "' not found, check source : " + bean.getSource()); } if (!typeClass.isAssignableFrom(bean.getBeanClass())) { throw new BeanDefinitionException("bean's type '" + typeClassName + "' must be assignable from bean's class '" + bean.getBeanClass().getName() + "', source : " + reader.getSource()); } def.setType(typeClass); def.setName(reader.getAttribute(NAME_ATTRIBUTE)); def.setPrimary(reader.getBooleanAttribute(PRIMARY_ATTRIBUTE, false)); def.setOverride(reader.getBooleanAttribute(OVERRIDE_ATTRIBUTE, context.defaultOverride)); bean.addAdditionalTypeDef(def); }
Class<?> type = tryForName(typeClassName);