xmlElementGetterGeneratorFactory function

GetterGenerator xmlElementGetterGeneratorFactory(
  1. FieldElement element
)

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,
      );
    }
  }
}