calculateConversion method

Converter? calculateConversion(
  1. SourceNode sourceNode
)

Implementation

Converter? calculateConversion(SourceNode sourceNode) {
  var conversion = match!.converter;
  var deep = match!.deep;

  Converter<dynamic,dynamic>? result;

  // check conversion

  var sourceType = sourceNode.accessor.type;
  var targetType = accessor.type;

  if ( conversion != null) {
    // manual conversion, check types!

    var from = conversion.sourceType;
    var to = conversion.targetType;

    if ( from != sourceType)
      throw MapperException("conversion source type $from does not match $sourceType");

    if ( to != targetType)
      throw MapperException("conversion target type $to does not match $targetType");

    result = conversion.sourceConverter();
  }
  else if (sourceType != targetType && /* !sourceType.isSubclassOf(targetType)*/ !deep )
    result = tryConvert(sourceType, targetType); // try automatic conversion for low-level types

  return result;
}