Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/07/20 16:25:39 (4 years ago)
Author:
dpiringe
Message:

#3026:

  • deleted: ConvertableAttribute, DummyConverter, ObjectExtensions
  • renamed: CustomJsonWriter -> SingleLineArrayJsonWriter, JCInstantiator -> JsonTemplateInstantiator
  • added: JsonItemConverterFactory, UnsupportedJsonItem
  • IJsonItemConverter:
    • added two new properties: Priority and ConvertableType -> because converters are automatically collected by plugin infrastructure now
    • Extract, Inject references a root converter now -> typically an instance of JsonItemConverter -> to prevent cycles
  • JsonItemConverter:
    • now implements the interface IJsonItemConverter
    • is now a dynamic class
    • is only instantiable with an factory (JsonItemConverterFactory)
    • still has the old (but now public) static methods Extract and Inject (without ref param IJsonItemConverter root) -> creates instance with factory and calls methods of instance
    • removed register and unregister methods, because the factory collects all converters automatically now (on first call of Create)
    • has cycle detection for Extract and Inject
    • renamed method Get to GetConverter
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs

    r17379 r17394  
    1111  public abstract class BaseConverter : IJsonItemConverter
    1212  {
    13     public void Inject(IItem item, JsonItem data) {
    14       InjectData(item, data);
     13    public abstract int Priority { get; }
     14    public abstract Type ConvertableType { get; }
     15
     16    public void Inject(IItem item, JsonItem data, IJsonItemConverter root) {
     17
     18      InjectData(item, data, root);
    1519    }
    1620
    17     public JsonItem Extract(IItem value) {
    18       JsonItem data = ExtractData(value);
    19       data.Name = string.IsNullOrEmpty(data.Name) ? value.ItemName : data.Name;
     21    public JsonItem Extract(IItem value, IJsonItemConverter root) {
     22      JsonItem data = new JsonItem() { Name = value.ItemName };
     23      Populate(value, data, root);
    2024      return data;
    2125    }
    2226   
    23     public abstract void InjectData(IItem item, JsonItem data);
    24     public abstract JsonItem ExtractData(IItem value);
     27    public abstract void InjectData(IItem item, JsonItem data, IJsonItemConverter root);
     28    public abstract void Populate(IItem value, JsonItem item, IJsonItemConverter root);
    2529
    2630    #region Helper
    2731    protected ValueType CastValue<ValueType>(object obj) {
    2832      if (obj is JToken)
    29         return obj.Cast<JToken>().ToObject<ValueType>();
     33        return ((JToken)obj).ToObject<ValueType>();
    3034      else if (obj is IConvertible)
    31         return Convert.ChangeType(obj, typeof(ValueType)).Cast<ValueType>();
     35        return (ValueType)Convert.ChangeType(obj, typeof(ValueType));
    3236      else return (ValueType)obj;
    3337    }
Note: See TracChangeset for help on using the changeset viewer.