ElementSerializer(Object elementValue, boolean errorOnUnknown) { this.errorOnUnknown = errorOnUnknown; Class<?> valueClass = elementValue.getClass(); if (Data.isPrimitive(valueClass) && !Data.isNull(elementValue)) { textValue = elementValue; } else if (valueClass.isEnum() && !Data.isNull(elementValue)){ textValue = elementValue; } else { for (Map.Entry<String, Object> entry : Data.mapOf(elementValue).entrySet()) { Object fieldValue = entry.getValue(); if (fieldValue != null && !Data.isNull(fieldValue)) { String fieldName = entry.getKey(); if (Xml.TEXT_CONTENT.equals(fieldName)) { textValue = fieldValue; } else if (fieldName.charAt(0) == '@') { attributeNames.add(fieldName.substring(1)); attributeValues.add(fieldValue); } else { subElementNames.add(fieldName); subElementValues.add(fieldValue); } } } } }
private void computeAliases(Object element, SortedSet<String> aliases) { for (Map.Entry<String, Object> entry : Data.mapOf(element).entrySet()) { Object value = entry.getValue(); if (value != null) { String name = entry.getKey(); if (!Xml.TEXT_CONTENT.equals(name)) { int colon = name.indexOf(':'); boolean isAttribute = name.charAt(0) == '@'; if (colon != -1 || !isAttribute) { String alias = colon == -1 ? "" : name.substring(name.charAt(0) == '@' ? 1 : 0, colon); aliases.add(alias); } Class<?> valueClass = value.getClass(); if (!isAttribute && !Data.isPrimitive(valueClass) && !valueClass.isEnum() ) { if (value instanceof Iterable<?> || valueClass.isArray()) { for (Object subValue : Types.iterableOf(value)) { computeAliases(subValue, aliases); } } else { computeAliases(value, aliases); } } } } } }
if (Data.isPrimitive(type)) { if (originalValue != null && originalValue.equals(patchedValue)) { continue;
if (ignore || Data.isPrimitive(fieldType) || isEnum) { int level = 1; while (level != 0) { if (Data.isPrimitive(subFieldType) || isSubEnum) { elementValue = parseTextContentForElement(parser, context, false, subFieldType); } else if (subFieldType == null || subFieldClass != null