Issue #AR-1_serialization: removed ArchetypeJsonConverter type argument - which is no longer needed

This commit is contained in:
cankoluman
2014-04-29 11:47:59 +01:00
parent 258b0859ab
commit a6b1abaecc
2 changed files with 23 additions and 34 deletions
@@ -8,7 +8,7 @@ namespace Archetype.Tests.Serialization
#region json test Models
[AsArchetype("urlPicker")]
[JsonConverter(typeof(ArchetypeJsonConverter<UrlPicker>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class UrlPicker
{
[JsonProperty("title")]
@@ -24,7 +24,7 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("contactDetails")]
[JsonConverter(typeof(ArchetypeJsonConverter<ContactDetails>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class ContactDetails
{
[JsonProperty("name")]
@@ -44,7 +44,7 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("companyDetails")]
[JsonConverter(typeof(ArchetypeJsonConverter<CompanyDetails>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class CompanyDetails
{
[JsonProperty("region")]
@@ -54,7 +54,7 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("allContactDetails")]
[JsonConverter(typeof(ArchetypeJsonConverter<AllContactDetails>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class AllContactDetails
{
public ContactDetails UserDetails { get; set; }
@@ -63,13 +63,13 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("contactDetailsList")]
[JsonConverter(typeof(ArchetypeJsonConverter<ContactDetailsList>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class ContactDetailsList : List<ContactDetails>
{
}
[AsArchetype("annualStatement")]
[JsonConverter(typeof(ArchetypeJsonConverter<AnnualStatement>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class AnnualStatement
{
public DateTime FiscalYearStart { get; set; }
@@ -81,7 +81,7 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("mergerDetails")]
[JsonConverter(typeof(ArchetypeJsonConverter<MergerDetails>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class MergerDetails
{
public DateTime MergerDate { get; set; }
@@ -94,7 +94,7 @@ namespace Archetype.Tests.Serialization
#region complex nested model
[AsArchetype("pages")]
[JsonConverter(typeof(ArchetypeJsonConverter<PageDetails>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class PageDetails
{
[JsonProperty("pages")]
@@ -105,7 +105,7 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("captions")]
[JsonConverter(typeof(ArchetypeJsonConverter<Captions>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class Captions
{
[JsonProperty("captions")]
@@ -113,13 +113,13 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("textstringArray")]
[JsonConverter(typeof(ArchetypeJsonConverter<TextList>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class TextList : List<TextItem>
{
}
[AsArchetype("textstringArray")]
[JsonConverter(typeof(ArchetypeJsonConverter<TextItem>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class TextItem
{
[JsonProperty("textstring")]
@@ -137,14 +137,14 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("slideShow")]
[JsonConverter(typeof(ArchetypeJsonConverter<SlideShow>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class SlideShow
{
public string Slides { get; set; }
}
[AsArchetype("seo")]
[JsonConverter(typeof(ArchetypeJsonConverter<Seo>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class Seo
{
public string MetaTitle { get; set; }
@@ -152,7 +152,7 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("TextPage")]
[JsonConverter(typeof(ArchetypeJsonConverter<TextPage>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class TextPage : PageBase
{
[AsFieldset]
@@ -163,16 +163,15 @@ namespace Archetype.Tests.Serialization
}
[AsArchetype("TextPageList")]
[JsonConverter(typeof(ArchetypeJsonConverter<TextPageList>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class TextPageList : List<TextPage>
{
}
[AsArchetype("Pages")]
[JsonConverter(typeof(ArchetypeJsonConverter<PageList>))]
[JsonConverter(typeof(ArchetypeJsonConverter))]
public class PageList
{
[AsArchetype("Pages")]
public TextPageList Pages { get; set; }
}
@@ -11,8 +11,7 @@ using Newtonsoft.Json.Linq;
namespace Archetype.Umbraco.Serialization
{
public class ArchetypeJsonConverter<T> : JsonConverter
where T : class, new()
public class ArchetypeJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
@@ -107,7 +106,7 @@ namespace Archetype.Umbraco.Serialization
foreach (var fs in jToken["fieldsets"].Where(fs => fs["alias"].ToString().Equals(GetFieldsetName(itemType))))
{
var item = JsonConvert.DeserializeObject(
fs["properties"].ToString(), itemType, GetArchetypeDatatypeConverter(itemType));
fs["properties"].ToString(), itemType, GetArchetypeDatatypeConverter());
obj.GetType().GetMethod("Add").Invoke(obj, new[] { item });
}
@@ -132,7 +131,7 @@ namespace Archetype.Umbraco.Serialization
var propValue = IsValueArchetypeDatatype(propInfo.PropertyType)
? JsonConvert.DeserializeObject(fsJToken.ToString(), propInfo.PropertyType,
GetArchetypeDatatypeConverter(propInfo.PropertyType))
GetArchetypeDatatypeConverter())
: GetDeserializedPropertyValue(fsJToken, propInfo.PropertyType); ;
propInfo.SetValue(obj, propValue);
@@ -173,7 +172,7 @@ namespace Archetype.Umbraco.Serialization
{
return IsValueArchetypeDatatype(propertyInfo.PropertyType)
? JsonConvert.DeserializeObject(propJToken["value"].ToString(), propertyInfo.PropertyType,
GetArchetypeDatatypeConverter(propertyInfo.PropertyType))
GetArchetypeDatatypeConverter())
: GetDeserializedPropertyValue(propJToken["value"], propertyInfo.PropertyType);
}
@@ -269,7 +268,7 @@ namespace Archetype.Umbraco.Serialization
new JProperty("value",
IsValueArchetypeDatatype(propValue)
? new JRaw(JsonConvert.SerializeObject(propValue,
GetArchetypeDatatypeConverter(propValue)))
GetArchetypeDatatypeConverter()))
: new JValue(GetSerializedPropertyValue(propValue))));
fsProperties.Add(fsProperty);
@@ -314,18 +313,9 @@ namespace Archetype.Umbraco.Serialization
return type.GetCustomAttributes(typeof(AsArchetypeAttribute), true).Length > 0;
}
private JsonConverter GetArchetypeDatatypeConverter(object value)
private JsonConverter GetArchetypeDatatypeConverter()
{
return GetArchetypeDatatypeConverter(value.GetType());
}
private JsonConverter GetArchetypeDatatypeConverter(Type type)
{
var converterType = typeof(ArchetypeJsonConverter<>);
Type[] typeArgs = { type };
var genericType = converterType.MakeGenericType(typeArgs);
return (JsonConverter)Activator.CreateInstance(genericType);
return (JsonConverter)Activator.CreateInstance(GetType());
}
private string GetSerializedPropertyValue(object propValue)