protected ValueDefinition readSet(BeanContainer container, XmlReader reader, LoaderContext context) { boolean merge = boolAttribute(reader, MERGE_ATTRIBUTE, false); Class<?> valueType = javaTypeAttribute(reader, VALUE_TYPE_ATTRIBUTE); Set<ValueDefinition> values = new LinkedHashSet<>(); final QName elementName = reader.getElementName(); while (reader.nextWhileNotEnd(elementName)) { if (reader.isStartElement()) { if (reader.isStartElement(DESCRIPTION_ELEMENT)) { continue; } ValueDefinition vd = readValueElement(container, reader, context); if (null != vd) { values.add(vd); } } } return new ValueDefinition(values, merge, null, null, valueType); }
protected ValueDefinition readList(BeanContainer container, XmlReader reader, LoaderContext context) { boolean merge = boolAttribute(reader, MERGE_ATTRIBUTE, false); Class<?> valueType = javaTypeAttribute(reader, VALUE_TYPE_ATTRIBUTE); List<ValueDefinition> values = new ArrayList<>(); final QName elementName = reader.getElementName(); while (reader.nextWhileNotEnd(elementName)) { if (reader.isStartElement()) { if (reader.isStartElement(DESCRIPTION_ELEMENT)) { continue; } ValueDefinition vd = readValueElement(container, reader, context); if (null != vd) { values.add(vd); } } } return new ValueDefinition(values, merge, null, null, valueType); }
protected ValueDefinition readArray(BeanContainer container, XmlReader reader, LoaderContext context) { boolean merge = boolAttribute(reader, MERGE_ATTRIBUTE, false); Class<?> valueType = javaTypeAttribute(reader, VALUE_TYPE_ATTRIBUTE); List<ValueDefinition> values = new ArrayList<>(); while (reader.nextWhileNotEnd(ARRAY_ELEMENT)) { if (reader.isStartElement()) { if (reader.isStartElement(DESCRIPTION_ELEMENT)) { continue; } if (reader.isStartElement()) { ValueDefinition vd = readValueElement(container, reader, context); if (null != vd) { values.add(vd); } continue; } throw new BeanDefinitionException("unsupported child element '" + reader.getElementLocalName() + "' in element 'array', source : " + reader.getSource()); } } return new ValueDefinition(values.toArray(), merge, null, null, valueType); }
@SuppressWarnings({"rawtypes", "unchecked"}) protected ValueDefinition readMap(BeanContainer container, XmlReader reader, LoaderContext context) { boolean merge = boolAttribute(reader, MERGE_ATTRIBUTE, false); Class<?> keyType = javaTypeAttribute(reader, KEY_TYPE_ATTRIBUTE); Class<?> valueType = javaTypeAttribute(reader, VALUE_TYPE_ATTRIBUTE); Map map = new LinkedHashMap(); final QName elementName = reader.getElementName(); while (reader.nextWhileNotEnd(elementName)) { if (reader.isStartElement()) { if (reader.isStartElement(DESCRIPTION_ELEMENT)) { continue; } if (reader.isStartElement(ENTRY_ELEMENT)) { ValueDefinition key = readEntryKey(container, reader, context); ValueDefinition val = readEntryValue(container, reader, context); map.put(key, val); continue; } throw new BeanDefinitionException("unsupported child element '" + reader.getElementLocalName() + "' in element 'map', source : " + reader.getSource()); } } //Skip END event reader.next(); return new ValueDefinition(map, merge, null, keyType, valueType); }
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; }
protected ValueDefinition readValueElement(BeanContainer container, XmlReader reader, LoaderContext context) { if (reader.isStartElement(VALUE_ELEMENT)) { return resolvedString(javaTypeAttribute(reader, TYPE_ATTRIBUTE), reader.getElementTextAndEnd());