xmlElementGetterGeneratorFactory function
Creates a GetterGenerator from a FieldElement
that has an attribute of the form @XmlElement()
.
Implementation
GetterGenerator xmlElementGetterGeneratorFactory(FieldElement element) {
final xmlElement = element.getXmlElement()!.toXmlElementValue()!;
final type = element.type;
if (type is ParameterizedType &&
(type.isDartCoreIterable || type.isDartCoreList || type.isDartCoreSet)) {
final converterElement = element.getXmlConverterElement(type: type);
if (converterElement != null) {
return XmlConverterXmlElementIterableGetterGenerator(
xmlElement.name ?? element.getEncodedFieldName(),
converterElement.name!,
namespace: xmlElement.namespace,
isNullable: type.isNullable,
);
} else if (type.typeArguments.single.element!.hasXmlSerializable) {
return XmlSerializableXmlElementIterableGetterGenerator(
xmlElement.name ?? element.getEncodedFieldName(),
namespace: xmlElement.namespace,
isNullable: type.isNullable,
);
} else {
return XmlTextXmlElementIterableGetterGenerator(
xmlElement.name ?? element.getEncodedFieldName(),
namespace: xmlElement.namespace,
isNullable: type.isNullable,
);
}
} else {
final converterElement = element.getXmlConverterElement(type: type);
if (converterElement != null) {
return XmlConverterXmlElementGetterGenerator(
xmlElement.name ?? element.getEncodedFieldName(),
converterElement.name!,
namespace: xmlElement.namespace,
isNullable: type.isNullable,
);
} else if (type.element!.hasXmlSerializable) {
return XmlSerializableXmlElementGetterGenerator(
xmlElement.name ?? element.getEncodedFieldName(),
namespace: xmlElement.namespace,
isNullable: type.isNullable,
);
} else {
return XmlTextXmlElementGetterGenerator(
xmlElement.name ?? element.getEncodedFieldName(),
namespace: xmlElement.namespace,
isNullable: type.isNullable,
);
}
}
}