|
|
|
@ -72,51 +72,11 @@ final class MapToMapConverter implements ConditionalGenericConverter { |
|
|
|
// internal helpers
|
|
|
|
// internal helpers
|
|
|
|
|
|
|
|
|
|
|
|
private boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) { |
|
|
|
private boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) { |
|
|
|
if (targetType.getMapKeyTypeDescriptor() == null) { |
|
|
|
return ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(), targetType.getMapKeyTypeDescriptor(), conversionService); |
|
|
|
// yes
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (sourceType.getMapKeyTypeDescriptor() == null) { |
|
|
|
|
|
|
|
// maybe
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
boolean canConvert = conversionService.canConvert(sourceType.getMapKeyTypeDescriptor(), targetType.getMapKeyTypeDescriptor()); |
|
|
|
|
|
|
|
if (canConvert) { |
|
|
|
|
|
|
|
// yes
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
if (sourceType.getMapKeyTypeDescriptor().getType().isAssignableFrom(targetType.getMapKeyTypeDescriptor().getType())) { |
|
|
|
|
|
|
|
// maybe;
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
// no;
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) { |
|
|
|
private boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) { |
|
|
|
if (targetType.getMapValueTypeDescriptor() == null) { |
|
|
|
return ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(), targetType.getMapValueTypeDescriptor(), conversionService); |
|
|
|
// yes
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (sourceType.getMapValueTypeDescriptor() == null) { |
|
|
|
|
|
|
|
// maybe
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
boolean canConvert = conversionService.canConvert(sourceType.getMapValueTypeDescriptor(), targetType.getMapValueTypeDescriptor()); |
|
|
|
|
|
|
|
if (canConvert) { |
|
|
|
|
|
|
|
// yes
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
if (sourceType.getMapValueTypeDescriptor().getType().isAssignableFrom(targetType.getMapValueTypeDescriptor().getType())) { |
|
|
|
|
|
|
|
// maybe;
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
// no;
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Object convertKey(Object sourceKey, TypeDescriptor sourceType, TypeDescriptor targetType) { |
|
|
|
private Object convertKey(Object sourceKey, TypeDescriptor sourceType, TypeDescriptor targetType) { |
|
|
|
|