Currently converting DEF from 1.4 to 2.0.1 and also from Sitecore 8.2 to Sitecore 9. I imported new code and templates from old site. I noticed some minor code changes between the different versions of DEF. I made those changes. No validation errors and no log errors. However when I run the pipeline batch process the code gets as far as the ValueAccessorConverter. It does not eventually continue on to the ReadResult part. I noticed a lot of template changes in Sitecore for the newest DEF have changed. Is there something I need to do differently in order for ReadResult to execute?
public class RedditFeedValueReader: IValueReader
{
public readonly string FieldName;
public bool UseValueProperty { get; set; }
public RedditFeedValueReader(string fieldName)
{
this.FieldName = fieldName;
}
public ReadResult CanRead(object source, DataAccessContext context)
{
bool flag = source != null && source is RedditSharp.Things.Post;
return new ReadResult(DateTime.Now)
{
ReadValue = source,
WasValueRead = flag,
};
}
public ReadResult Read(object source, DataAccessContext context)
{
var flag = false;
object readValue = (object) null;
var feeditem = source as RedditSharp.Things.Post;
if (feeditem != null)
{
if (FieldName == "Title" && !string.IsNullOrEmpty(feeditem.Title))
{
readValue = feeditem.Title;
flag = true;
}
else if (FieldName == "AuthorName" && !string.IsNullOrEmpty(feeditem.AuthorName))
{
readValue = feeditem.AuthorName;
flag = true;
}
else if (FieldName == "SelfText" && !string.IsNullOrEmpty(feeditem.SelfText))
{
readValue = feeditem.SelfText;
flag = true;
}
else if (FieldName == "Url" && !string.IsNullOrEmpty(feeditem.Url.ToString()))
{
readValue = feeditem.Url;
flag = true;
}
}
return new ReadResult(DateTime.Now)
{
WasValueRead = flag,
ReadValue = readValue
};
}
}
private static readonly Guid TemplateId = Guid.Parse("{68BD9AAD-635F-40F3-9ACD-711662C59EEC}");
private IValueReader ValueReader { get; set; }
private IValueWriter ValueWriter { get; set; }
public RedditFeedFieldValueAccessorConverter(IItemModelRepository repository) : base(repository)
{
this.SupportedTemplateIds.Add(TemplateId);
}
protected override ConvertResult<IValueAccessor> ConvertSupportedItem(ItemModel source)
{
var accessor = base.Convert(source);
if (accessor == null)
{
return null;
}
var fieldName = base.GetStringValue(source, RedditFeedFieldValueValueAccessorItemModel.RedditFeedFieldName);
if (string.IsNullOrEmpty(fieldName))
{
return null;
}
ValueWriter = this.GetValueWriter(source);
// ValueReader= this.GetValueReader(source) ?? new RedditFeedValueReader(fieldName);
if (accessor.ValueReader == null)
{
accessor.ValueReader = new RedditFeedValueReader(fieldName);
}
if (ValueWriter == null)
{
ValueWriter = new PropertyValueWriter(fieldName);
}
return this.PositiveResult((IValueAccessor) new ValueAccessor());
}
public class RedditFeedFieldValueAccessorConverter:ValueAccessorConverter
{
private static readonly Guid TemplateId = Guid.Parse("{68BD9AAD-635F-40F3-9ACD-711662C59EEC}");
private IValueReader ValueReader { get; set; }
private IValueWriter ValueWriter { get; set; }
public RedditFeedFieldValueAccessorConverter(IItemModelRepository repository) : base(repository)
{
this.SupportedTemplateIds.Add(TemplateId);
}
protected override ConvertResult<IValueAccessor> ConvertSupportedItem(ItemModel source)
{
var accessor = base.Convert(source);
if (accessor == null)
{
return null;
}
var fieldName = base.GetStringValue(source, RedditFeedFieldValueValueAccessorItemModel.RedditFeedFieldName);
if (string.IsNullOrEmpty(fieldName))
{
return null;
}
ValueWriter = this.GetValueWriter(source);
// ValueReader= this.GetValueReader(source) ?? new RedditFeedValueReader(fieldName);
if (accessor.ValueReader == null)
{
accessor.ValueReader = new RedditFeedValueReader(fieldName);
}
if (ValueWriter == null)
{
ValueWriter = new PropertyValueWriter(fieldName);
}
return this.PositiveResult((IValueAccessor) new ValueAccessor());
}