mapDeep method

MapperProperty mapDeep(
  1. Mapper mapper,
  2. Accessor source,
  3. Accessor target,
  4. MapperProperty targetProperty,
)

Implementation

MapperProperty mapDeep(Mapper mapper, Accessor source, Accessor target, MapperProperty targetProperty) {
  var isSourceMultiValued = source.isContainer();
  var isTargetMultiValued = target.isContainer();

  if (isSourceMultiValued != isTargetMultiValued)
    throw MapperException("relations must have the same cardinality");

  if (isSourceMultiValued) {
    return MapList2List(
        mapper: mapper,
        sourceType: source.getElementType(),
        targetType:  target.getElementType(),
        property: targetProperty,
        factory: target.getContainerConstructor()!);
  }
  else {
    return MapDeep(mapper: mapper, sourceType: source.type, targetProperty: targetProperty);
  }
}