@Override
public Object convert(RichTextData toConvert, TypeInformation targetType, SemanticField semanticField,
ModelBuilderPipeline pipeline, DefaultSemanticFieldDataProvider dataProvider) throws FieldConverterException {
Class<?> objectType = targetType.getObjectType();
List<RichTextFragment> fragments = new ArrayList<>();
for (Object fragment : toConvert.getValues()) {
if (fragment instanceof String) {
fragments.add(new RichTextFragmentImpl((String) fragment));
} else {
log.debug("Fragment {} is a not a string but perhaps EntityModelData, skipping link resolving");
MediaItem mediaItem;
EntityModelData entityModelData = (EntityModelData) fragment;
try {
mediaItem = pipeline.createEntityModel(entityModelData, MediaItem.class);
} catch (DxaException e) {
throw new FieldConverterException("Cannot create an instance of Media Item in RichText, model id " + entityModelData.getId(), e);
}
mediaItem.setEmbedded(true);
fragments.add(mediaItem);
}
}
RichText richText = new RichText(fragments);
return convertToCollectionIfNeeded(objectType == String.class ? richText.toString() : richText, targetType);
}