protected ValueDefinition tryCreateBeanReference(LoaderContext context, XmlReader reader, String refId, String refType, String refName) { if (!Strings.isEmpty(refId)) { return beanReference(context, refId); } if (!Strings.isAllEmpty(refType, refName)) { if (Strings.isEmpty(refType)) { throw new BeanDefinitionException("'The referenced bean type must not be empty, check :" + reader.getCurrentLocation()); } try { Class<?> c = forName(refType); return beanReference(context, c, refName); } catch (NestedClassNotFoundException e) { throw new BeanDefinitionException("Invalid class name '" + refType + "', source : " + reader.getSource(), e); } } return null; }
protected ValueDefinition readEntryKey(BeanContainer container, XmlReader reader, LoaderContext context) { String key = reader.getAttribute(KEY_ATTRIBUTE); String keyRef = reader.getAttribute(KEY_REF_ATTRIBUTE); if (Strings.isAllEmpty(key, keyRef)) { throw new BeanDefinitionException("'key' or 'key-ref' must be defined in element '" + reader.getElementLocalName() + "', source : " + reader.getSource()); } if (!Strings.isEmpty(key)) { return resolvedString(key); } else { return beanReference(context, keyRef); } }
protected ValueDefinition readEntryValue(BeanContainer container, XmlReader reader, LoaderContext context) { Class<?> valueType = javaTypeAttribute(reader, VALUE_TYPE_ATTRIBUTE); String value = reader.getAttribute(VALUE_ATTRIBUTE); if (!Strings.isEmpty(value)) { return resolvedString(valueType, value); } String valueRef = reader.getAttribute(VALUE_REF_ATTRIBUTE); if (!Strings.isEmpty(valueRef)) { return beanReference(context, valueRef); } while (reader.nextWhileNotEnd(ENTRY_ELEMENT)) { if (reader.isStartElement()) { if (reader.isStartElement(DESCRIPTION_ELEMENT)) { continue; } if (reader.isStartElement()) { return readValueElement(container, reader, context); } throw new BeanDefinitionException("unsupported child element '" + reader.getElementLocalName() + "' in element 'entry', source : " + reader.getSource()); } } return null; }