@Override public Object convert(EntityModelData toConvert, TypeInformation targetType, SemanticField semanticField, ModelBuilderPipeline pipeline, DefaultSemanticFieldDataProvider dataProvider) throws FieldConverterException { Class<?> objectType = targetType.getObjectType(); Object result; if (String.class.isAssignableFrom(objectType)) { result = toConvert.getLinkUrl(); } else if (Link.class.isAssignableFrom(objectType)) { Link link = new Link(); link.setId(toConvert.getId()); link.setUrl(toConvert.getLinkUrl()); result = link; } else { try { if (EntityModel.class.isAssignableFrom(objectType)) { result = pipeline.createEntityModel(toConvert, objectType.asSubclass(EntityModel.class)); } else { throw new FieldConverterException("Object type " + objectType + " is not supported by EntityModelDataConverter"); } } catch (DxaException e) { throw new FieldConverterException("Cannot convert a entity model " + toConvert.getId() + " to " + objectType + " for semantic field " + semanticField.getName(), e); } } return convertToCollectionIfNeeded(result, targetType); }
@Override public Object convert(EntityModelData toConvert, TypeInformation targetType, SemanticField semanticField, ModelBuilderPipeline pipeline, DefaultSemanticFieldDataProvider dataProvider) throws FieldConverterException { Class<?> objectType = targetType.getObjectType(); Object result; if (String.class.isAssignableFrom(objectType)) { result = toConvert.getLinkUrl(); } else if (Link.class.isAssignableFrom(objectType)) { Link link = new Link(); link.setId(toConvert.getId()); link.setUrl(toConvert.getLinkUrl()); result = link; } else { try { if (EntityModel.class.isAssignableFrom(objectType)) { result = pipeline.createEntityModel(toConvert, objectType.asSubclass(EntityModel.class)); } else { throw new FieldConverterException("Object type " + objectType + " is not supported by EntityModelDataConverter"); } } catch (DxaException e) { throw new FieldConverterException("Cannot convert a entity model " + toConvert.getId() + " to " + objectType + " for semantic field " + semanticField.getName(), e); } } return wrapIfNeeded(result, targetType); } }