diff --git a/src/Umbraco.Core/ContentVariationExtensions.cs b/src/Umbraco.Core/ContentVariationExtensions.cs
index c5e4a67fe2..9fdc5f0b90 100644
--- a/src/Umbraco.Core/ContentVariationExtensions.cs
+++ b/src/Umbraco.Core/ContentVariationExtensions.cs
@@ -88,22 +88,22 @@ namespace Umbraco.Core
///
/// Determines whether the property type is invariant.
///
- public static bool VariesByNothing(this PublishedPropertyType propertyType) => propertyType.Variations.VariesByNothing();
+ public static bool VariesByNothing(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesByNothing();
///
/// Determines whether the property type varies by culture.
///
- public static bool VariesByCulture(this PublishedPropertyType propertyType) => propertyType.Variations.VariesByCulture();
+ public static bool VariesByCulture(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesByCulture();
///
/// Determines whether the property type varies by segment.
///
- public static bool VariesBySegment(this PublishedPropertyType propertyType) => propertyType.Variations.VariesBySegment();
+ public static bool VariesBySegment(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesBySegment();
///
/// Determines whether the property type varies by culture and segment.
///
- public static bool VariesByCultureAndSegment(this PublishedPropertyType propertyType) => propertyType.Variations.VariesByCultureAndSegment();
+ public static bool VariesByCultureAndSegment(this IPublishedPropertyType propertyType) => propertyType.Variations.VariesByCultureAndSegment();
///
/// Determines whether a variation is invariant.
diff --git a/src/Umbraco.Core/Models/PublishedContent/IPublishedContentType.cs b/src/Umbraco.Core/Models/PublishedContent/IPublishedContentType.cs
index 3c28ca1508..ab6920377c 100644
--- a/src/Umbraco.Core/Models/PublishedContent/IPublishedContentType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/IPublishedContentType.cs
@@ -42,7 +42,7 @@ namespace Umbraco.Core.Models.PublishedContent
///
/// Gets the content type properties.
///
- IEnumerable PropertyTypes { get; }
+ IEnumerable PropertyTypes { get; }
///
/// Gets a property type index.
@@ -53,11 +53,11 @@ namespace Umbraco.Core.Models.PublishedContent
///
/// Gets a property type.
///
- PublishedPropertyType GetPropertyType(string alias);
+ IPublishedPropertyType GetPropertyType(string alias);
///
/// Gets a property type.
///
- PublishedPropertyType GetPropertyType(int index);
+ IPublishedPropertyType GetPropertyType(int index);
}
}
diff --git a/src/Umbraco.Core/Models/PublishedContent/IPublishedContentTypeFactory.cs b/src/Umbraco.Core/Models/PublishedContent/IPublishedContentTypeFactory.cs
index a43f572a74..816bfdbb01 100644
--- a/src/Umbraco.Core/Models/PublishedContent/IPublishedContentTypeFactory.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/IPublishedContentTypeFactory.cs
@@ -18,7 +18,7 @@
/// The published content type owning the property.
/// A property type.
/// Is used by constructor to create property types.
- PublishedPropertyType CreatePropertyType(IPublishedContentType contentType, PropertyType propertyType);
+ IPublishedPropertyType CreatePropertyType(IPublishedContentType contentType, PropertyType propertyType);
///
/// Creates a published property type.
@@ -28,7 +28,7 @@
/// The datatype identifier.
/// The variations.
/// Is used by constructor to create special property types.
- PublishedPropertyType CreatePropertyType(IPublishedContentType contentType, string propertyTypeAlias, int dataTypeId, ContentVariation variations);
+ IPublishedPropertyType CreatePropertyType(IPublishedContentType contentType, string propertyTypeAlias, int dataTypeId, ContentVariation variations);
///
/// Gets a published datatype.
diff --git a/src/Umbraco.Core/Models/PublishedContent/IPublishedProperty.cs b/src/Umbraco.Core/Models/PublishedContent/IPublishedProperty.cs
index 9a00e94d3e..2ee7dcb28f 100644
--- a/src/Umbraco.Core/Models/PublishedContent/IPublishedProperty.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/IPublishedProperty.cs
@@ -5,7 +5,7 @@
///
public interface IPublishedProperty
{
- PublishedPropertyType PropertyType { get; }
+ IPublishedPropertyType PropertyType { get; }
///
/// Gets the alias of the property.
diff --git a/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs b/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
new file mode 100644
index 0000000000..40f2bf3df2
--- /dev/null
+++ b/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
@@ -0,0 +1,108 @@
+using System;
+using Umbraco.Core.PropertyEditors;
+
+namespace Umbraco.Core.Models.PublishedContent
+{
+ ///
+ /// Represents a published property type.
+ ///
+ /// Instances implementing the interface should be
+ /// immutable, ie if the property type changes, then a new instance needs to be created.
+ public interface IPublishedPropertyType
+ {
+ ///
+ /// Gets the published content type containing the property type.
+ ///
+ IPublishedContentType ContentType { get; }
+
+ ///
+ /// Gets the data type.
+ ///
+ PublishedDataType DataType { get; }
+
+ ///
+ /// Gets property type alias.
+ ///
+ string Alias { get; }
+
+ ///
+ /// Gets the property editor alias.
+ ///
+ string EditorAlias { get; }
+
+ ///
+ /// Gets a value indicating whether the property is a user content property.
+ ///
+ /// A non-user content property is a property that has been added to a
+ /// published content type by Umbraco but does not corresponds to a user-defined
+ /// published property.
+ bool IsUserProperty { get; }
+
+ ///
+ /// Gets the content variations of the property type.
+ ///
+ ContentVariation Variations { get; }
+
+ ///
+ /// Determines whether a value is an actual value, or not a value.
+ ///
+ /// Used by property.HasValue and, for instance, in fallback scenarios.
+ bool? IsValue(object value, PropertyValueLevel level);
+
+ ///
+ /// Gets the property cache level.
+ ///
+ PropertyCacheLevel CacheLevel { get; }
+
+ ///
+ /// Converts the source value into the intermediate value.
+ ///
+ /// The published element owning the property.
+ /// The source value.
+ /// A value indicating whether content should be considered draft.
+ /// The intermediate value.
+ object ConvertSourceToInter(IPublishedElement owner, object source, bool preview);
+
+ ///
+ /// Converts the intermediate value into the object value.
+ ///
+ /// The published element owning the property.
+ /// The reference cache level.
+ /// The intermediate value.
+ /// A value indicating whether content should be considered draft.
+ /// The object value.
+ object ConvertInterToObject(IPublishedElement owner, PropertyCacheLevel referenceCacheLevel, object inter, bool preview);
+
+ ///
+ /// Converts the intermediate value into the XPath value.
+ ///
+ /// The published element owning the property.
+ /// The reference cache level.
+ /// The intermediate value.
+ /// A value indicating whether content should be considered draft.
+ /// The XPath value.
+ ///
+ /// The XPath value can be either a string or an XPathNavigator.
+ ///
+ object ConvertInterToXPath(IPublishedElement owner, PropertyCacheLevel referenceCacheLevel, object inter, bool preview);
+
+ ///
+ /// Gets the property model CLR type.
+ ///
+ ///
+ /// The model CLR type may be a type, or may contain types.
+ /// For the actual CLR type, see .
+ ///
+ Type ModelClrType { get; }
+
+ ///
+ /// Gets the property CLR type.
+ ///
+ ///
+ /// Returns the actual CLR type which does not contain types.
+ /// Mapping from may throw if some instances
+ /// could not be mapped to actual CLR types.
+ ///
+ Type ClrType { get; }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs
index c6639b4109..fedd7445b7 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs
@@ -11,7 +11,7 @@ namespace Umbraco.Core.Models.PublishedContent
/// if the content type changes, then a new class needs to be created.
public class PublishedContentType : IPublishedContentType
{
- private readonly PublishedPropertyType[] _propertyTypes;
+ private readonly IPublishedPropertyType[] _propertyTypes;
// fast alias-to-index xref containing both the raw alias and its lowercase version
private readonly Dictionary _indexes = new Dictionary();
@@ -34,11 +34,11 @@ namespace Umbraco.Core.Models.PublishedContent
InitializeIndexes();
}
+ // fixme should be internal?
///
- /// Initializes a new instance of the with specific values.
+ /// This constructor is for tests and is not intended to be used directly from application code.
///
///
- /// This constructor is for tests and is not intended to be used directly from application code.
/// Values are assumed to be consisted and are not checked.
///
public PublishedContentType(int id, string alias, PublishedItemType itemType, IEnumerable compositionAliases, IEnumerable propertyTypes, ContentVariation variations, bool isElement = false)
@@ -52,6 +52,15 @@ namespace Umbraco.Core.Models.PublishedContent
InitializeIndexes();
}
+ // fixme
+ public PublishedContentType(int id, string alias, PublishedItemType itemType, IEnumerable compositionAliases, Func> propertyTypes, ContentVariation variations, bool isElement = false)
+ : this(id, alias, itemType, compositionAliases, variations, isElement)
+ {
+ _propertyTypes = propertyTypes(this).ToArray();
+
+ InitializeIndexes();
+ }
+
private PublishedContentType(int id, string alias, PublishedItemType itemType, IEnumerable compositionAliases, ContentVariation variations, bool isElement)
{
Id = id;
@@ -75,7 +84,7 @@ namespace Umbraco.Core.Models.PublishedContent
// Members have properties such as IMember LastLoginDate which are plain C# properties and not content
// properties; they are exposed as pseudo content properties, as long as a content property with the
// same alias does not exist already.
- private void EnsureMemberProperties(List propertyTypes, IPublishedContentTypeFactory factory)
+ private void EnsureMemberProperties(List propertyTypes, IPublishedContentTypeFactory factory)
{
var aliases = new HashSet(propertyTypes.Select(x => x.Alias), StringComparer.OrdinalIgnoreCase);
@@ -123,7 +132,7 @@ namespace Umbraco.Core.Models.PublishedContent
#region Properties
///
- public IEnumerable PropertyTypes => _propertyTypes;
+ public IEnumerable PropertyTypes => _propertyTypes;
///
public int GetPropertyIndex(string alias)
@@ -136,7 +145,7 @@ namespace Umbraco.Core.Models.PublishedContent
// virtual for unit tests
// TODO: explain why
///
- public virtual PublishedPropertyType GetPropertyType(string alias)
+ public virtual IPublishedPropertyType GetPropertyType(string alias)
{
var index = GetPropertyIndex(alias);
return GetPropertyType(index);
@@ -145,7 +154,7 @@ namespace Umbraco.Core.Models.PublishedContent
// virtual for unit tests
// TODO: explain why
///
- public virtual PublishedPropertyType GetPropertyType(int index)
+ public virtual IPublishedPropertyType GetPropertyType(int index)
{
return index >= 0 && index < _propertyTypes.Length ? _propertyTypes[index] : null;
}
diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedContentTypeFactory.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedContentTypeFactory.cs
index 01f01743de..78d05607b4 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedContentTypeFactory.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedContentTypeFactory.cs
@@ -31,32 +31,43 @@ namespace Umbraco.Core.Models.PublishedContent
return new PublishedContentType(contentType, this);
}
+ // fixme kill
// for tests
internal IPublishedContentType CreateContentType(int id, string alias, IEnumerable propertyTypes, ContentVariation variations = ContentVariation.Nothing, bool isElement = false)
{
return new PublishedContentType(id, alias, PublishedItemType.Content, Enumerable.Empty(), propertyTypes, variations, isElement);
}
+ internal IPublishedContentType CreateContentType(int id, string alias, Func> propertyTypes, ContentVariation variations = ContentVariation.Nothing, bool isElement = false)
+ {
+ return new PublishedContentType(id, alias, PublishedItemType.Content, Enumerable.Empty(), propertyTypes, variations, isElement);
+ }
+ // fixme kill
// for tests
internal IPublishedContentType CreateContentType(int id, string alias, IEnumerable compositionAliases, IEnumerable propertyTypes, ContentVariation variations = ContentVariation.Nothing, bool isElement = false)
{
return new PublishedContentType(id, alias, PublishedItemType.Content, compositionAliases, propertyTypes, variations, isElement);
}
+ internal IPublishedContentType CreateContentType(int id, string alias, IEnumerable compositionAliases, Func> propertyTypes, ContentVariation variations = ContentVariation.Nothing, bool isElement = false)
+ {
+ return new PublishedContentType(id, alias, PublishedItemType.Content, compositionAliases, propertyTypes, variations, isElement);
+ }
///
- public PublishedPropertyType CreatePropertyType(IPublishedContentType contentType, PropertyType propertyType)
+ public IPublishedPropertyType CreatePropertyType(IPublishedContentType contentType, PropertyType propertyType)
{
return new PublishedPropertyType(contentType, propertyType, _propertyValueConverters, _publishedModelFactory, this);
}
///
- public PublishedPropertyType CreatePropertyType(IPublishedContentType contentType, string propertyTypeAlias, int dataTypeId, ContentVariation variations = ContentVariation.Nothing)
+ public IPublishedPropertyType CreatePropertyType(IPublishedContentType contentType, string propertyTypeAlias, int dataTypeId, ContentVariation variations = ContentVariation.Nothing)
{
return new PublishedPropertyType(contentType, propertyTypeAlias, dataTypeId, true, variations, _propertyValueConverters, _publishedModelFactory, this);
}
+ // fixme kill
// for tests
- internal PublishedPropertyType CreatePropertyType(string propertyTypeAlias, int dataTypeId, bool umbraco = false, ContentVariation variations = ContentVariation.Nothing)
+ internal IPublishedPropertyType CreatePropertyType(string propertyTypeAlias, int dataTypeId, bool umbraco = false, ContentVariation variations = ContentVariation.Nothing)
{
return new PublishedPropertyType(propertyTypeAlias, dataTypeId, umbraco, variations, _propertyValueConverters, _publishedModelFactory, this);
}
diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyBase.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyBase.cs
index 5f374f8bc8..e11d2391ec 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyBase.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyBase.cs
@@ -12,7 +12,7 @@ namespace Umbraco.Core.Models.PublishedContent
///
/// Initializes a new instance of the class.
///
- protected PublishedPropertyBase(PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel)
+ protected PublishedPropertyBase(IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel)
{
PropertyType = propertyType ?? throw new ArgumentNullException(nameof(propertyType));
ReferenceCacheLevel = referenceCacheLevel;
@@ -42,7 +42,7 @@ namespace Umbraco.Core.Models.PublishedContent
///
/// Gets the property type.
///
- public PublishedPropertyType PropertyType { get; }
+ public IPublishedPropertyType PropertyType { get; }
///
/// Gets the property reference cache level.
diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
index 8dd5003582..1632a85f44 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
@@ -10,10 +10,8 @@ namespace Umbraco.Core.Models.PublishedContent
///
/// Instances of the class are immutable, ie
/// if the property type changes, then a new class needs to be created.
- public class PublishedPropertyType
+ public class PublishedPropertyType : IPublishedPropertyType
{
- // TODO: API design review, should this be an interface?
-
private readonly IPublishedModelFactory _publishedModelFactory;
private readonly PropertyValueConverterCollection _propertyValueConverters;
private readonly object _locker = new object();
@@ -38,6 +36,7 @@ namespace Umbraco.Core.Models.PublishedContent
ContentType = contentType ?? throw new ArgumentNullException(nameof(contentType));
}
+ // fixme should be internal?
///
/// This constructor is for tests and is not intended to be used directly from application code.
///
@@ -51,6 +50,7 @@ namespace Umbraco.Core.Models.PublishedContent
ContentType = contentType ?? throw new ArgumentNullException(nameof(contentType));
}
+ // fixme should be internal?
///
/// This constructor is for tests and is not intended to be used directly from application code.
///
@@ -75,37 +75,22 @@ namespace Umbraco.Core.Models.PublishedContent
#region Property type
- ///
- /// Gets the published content type containing the property type.
- ///
+ ///
public IPublishedContentType ContentType { get; internal set; } // internally set by PublishedContentType constructor
- ///
- /// Gets the data type.
- ///
+ ///
public PublishedDataType DataType { get; }
- ///
- /// Gets property type alias.
- ///
+ ///
public string Alias { get; }
- ///
- /// Gets the property editor alias.
- ///
+ ///
public string EditorAlias => DataType.EditorAlias;
- ///
- /// Gets a value indicating whether the property is a user content property.
- ///
- /// A non-user content property is a property that has been added to a
- /// published content type by Umbraco but does not corresponds to a user-defined
- /// published property.
+ ///
public bool IsUserProperty { get; }
- ///
- /// Gets the content variations of the property type.
- ///
+ ///
public ContentVariation Variations { get; }
#endregion
@@ -193,10 +178,7 @@ namespace Umbraco.Core.Models.PublishedContent
_modelClrType = _converter == null ? typeof (object) : _converter.GetPropertyValueType(this);
}
- ///
- /// Determines whether a value is an actual value, or not a value.
- ///
- /// Used by property.HasValue and, for instance, in fallback scenarios.
+ ///
public bool? IsValue(object value, PropertyValueLevel level)
{
if (!_initialized) Initialize();
@@ -209,9 +191,7 @@ namespace Umbraco.Core.Models.PublishedContent
return value != null && (!(value is string) || string.IsNullOrWhiteSpace((string) value) == false);
}
- ///
- /// Gets the property cache level.
- ///
+ ///
public PropertyCacheLevel CacheLevel
{
get
@@ -221,13 +201,7 @@ namespace Umbraco.Core.Models.PublishedContent
}
}
- ///
- /// Converts the source value into the intermediate value.
- ///
- /// The published element owning the property.
- /// The source value.
- /// A value indicating whether content should be considered draft.
- /// The intermediate value.
+ ///
public object ConvertSourceToInter(IPublishedElement owner, object source, bool preview)
{
if (!_initialized) Initialize();
@@ -238,14 +212,7 @@ namespace Umbraco.Core.Models.PublishedContent
: source;
}
- ///
- /// Converts the intermediate value into the object value.
- ///
- /// The published element owning the property.
- /// The reference cache level.
- /// The intermediate value.
- /// A value indicating whether content should be considered draft.
- /// The object value.
+ ///
public object ConvertInterToObject(IPublishedElement owner, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
if (!_initialized) Initialize();
@@ -256,17 +223,7 @@ namespace Umbraco.Core.Models.PublishedContent
: inter;
}
- ///
- /// Converts the intermediate value into the XPath value.
- ///
- /// The published element owning the property.
- /// The reference cache level.
- /// The intermediate value.
- /// A value indicating whether content should be considered draft.
- /// The XPath value.
- ///
- /// The XPath value can be either a string or an XPathNavigator.
- ///
+ ///
public object ConvertInterToXPath(IPublishedElement owner, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
if (!_initialized) Initialize();
@@ -282,13 +239,7 @@ namespace Umbraco.Core.Models.PublishedContent
return inter.ToString().Trim();
}
- ///
- /// Gets the property model CLR type.
- ///
- ///
- /// The model CLR type may be a type, or may contain types.
- /// For the actual CLR type, see .
- ///
+ ///
public Type ModelClrType
{
get
@@ -298,14 +249,7 @@ namespace Umbraco.Core.Models.PublishedContent
}
}
- ///
- /// Gets the property CLR type.
- ///
- ///
- /// Returns the actual CLR type which does not contain types.
- /// Mapping from may throw if some instances
- /// could not be mapped to actual CLR types.
- ///
+ ///
public Type ClrType
{
get
diff --git a/src/Umbraco.Core/Models/PublishedContent/RawValueProperty.cs b/src/Umbraco.Core/Models/PublishedContent/RawValueProperty.cs
index 7469222ab0..10f999532f 100644
--- a/src/Umbraco.Core/Models/PublishedContent/RawValueProperty.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/RawValueProperty.cs
@@ -38,7 +38,7 @@ namespace Umbraco.Core.Models.PublishedContent
public override object GetXPathValue(string culture = null, string segment = null)
=> string.IsNullOrEmpty(culture) & string.IsNullOrEmpty(segment) ? _xpathValue.Value : null;
- public RawValueProperty(PublishedPropertyType propertyType, IPublishedElement content, object sourceValue, bool isPreviewing = false)
+ public RawValueProperty(IPublishedPropertyType propertyType, IPublishedElement content, object sourceValue, bool isPreviewing = false)
: base(propertyType, PropertyCacheLevel.Unknown) // cache level is ignored
{
if (propertyType.Variations != ContentVariation.Nothing)
diff --git a/src/Umbraco.Core/PropertyEditors/IPropertyValueConverter.cs b/src/Umbraco.Core/PropertyEditors/IPropertyValueConverter.cs
index f6a7cbf32f..0a9cf632bc 100644
--- a/src/Umbraco.Core/PropertyEditors/IPropertyValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/IPropertyValueConverter.cs
@@ -15,7 +15,7 @@ namespace Umbraco.Core.PropertyEditors
///
/// The property type.
/// A value indicating whether the converter supports a property type.
- bool IsConverter(PublishedPropertyType propertyType);
+ bool IsConverter(IPublishedPropertyType propertyType);
///
/// Determines whether a value is an actual value, or not a value.
@@ -36,14 +36,14 @@ namespace Umbraco.Core.PropertyEditors
/// The CLR type of values returned by the converter.
/// Some of the CLR types may be generated, therefore this method cannot directly return
/// a Type object (which may not exist yet). In which case it needs to return a ModelType instance.
- Type GetPropertyValueType(PublishedPropertyType propertyType);
+ Type GetPropertyValueType(IPublishedPropertyType propertyType);
///
/// Gets the property cache level.
///
/// The property type.
/// The property cache level.
- PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType);
+ PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType);
///
/// Converts a property source value to an intermediate value.
@@ -64,7 +64,7 @@ namespace Umbraco.Core.PropertyEditors
/// strings, and xml-whitespace strings appropriately, ie it should know whether to preserve
/// white spaces.
///
- object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview);
+ object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview);
///
/// Converts a property intermediate value to an Object value.
@@ -83,7 +83,7 @@ namespace Umbraco.Core.PropertyEditors
/// passed to eg a PublishedFragment constructor. It is used by the fragment and the properties to manage
/// the cache levels of property values. It is not meant to be used by the converter.
///
- object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview);
+ object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview);
///
/// Converts a property intermediate value to an XPath value.
@@ -107,6 +107,6 @@ namespace Umbraco.Core.PropertyEditors
/// passed to eg a PublishedFragment constructor. It is used by the fragment and the properties to manage
/// the cache levels of property values. It is not meant to be used by the converter.
///
- object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview);
+ object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview);
}
}
diff --git a/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs b/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs
index 48bfc49ed9..3b6ebc610c 100644
--- a/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs
+++ b/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs
@@ -8,7 +8,7 @@ namespace Umbraco.Core.PropertyEditors
///
public abstract class PropertyValueConverterBase : IPropertyValueConverter
{
- public virtual bool IsConverter(PublishedPropertyType propertyType)
+ public virtual bool IsConverter(IPublishedPropertyType propertyType)
=> false;
public virtual bool? IsValue(object value, PropertyValueLevel level)
@@ -30,19 +30,19 @@ namespace Umbraco.Core.PropertyEditors
return value != null && (!(value is string) || string.IsNullOrWhiteSpace((string) value) == false);
}
- public virtual Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public virtual Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (object);
- public virtual PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public virtual PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Snapshot;
- public virtual object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public virtual object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
=> source;
- public virtual object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public virtual object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
=> inter;
- public virtual object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public virtual object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
=> inter?.ToString() ?? string.Empty;
}
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/CheckboxListValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/CheckboxListValueConverter.cs
index 3d69c37b8b..dd2dfb49e7 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/CheckboxListValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/CheckboxListValueConverter.cs
@@ -9,16 +9,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class CheckboxListValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.CheckBoxList);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IEnumerable);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
{
var sourceString = source?.ToString() ?? string.Empty;
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs
index 9f260fc973..46dae3e4f0 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs
@@ -8,16 +8,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class ColorPickerValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.ColorPicker);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> UseLabel(propertyType) ? typeof(PickedColor) : typeof(string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
var useLabel = UseLabel(propertyType);
@@ -39,7 +39,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
return ssource;
}
- private bool UseLabel(PublishedPropertyType propertyType)
+ private bool UseLabel(IPublishedPropertyType propertyType)
{
return ConfigurationEditor.ConfigurationAs(propertyType.DataType.Configuration).UseLabel;
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs
index ffe9feb653..0206528bf7 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs
@@ -8,16 +8,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class DatePickerValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.DateTime);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (DateTime);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return DateTime.MinValue;
@@ -39,7 +39,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
// default ConvertSourceToObject just returns source ie a DateTime value
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a DateTime already
return XmlConvert.ToString((DateTime) inter, XmlDateTimeSerializationMode.Unspecified);
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
index 6f7888aee3..7d6e7c0ce9 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
@@ -7,16 +7,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class DecimalValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> Constants.PropertyEditors.Aliases.Decimal.Equals(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (decimal);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null)
{
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/EmailAddressValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/EmailAddressValueConverter.cs
index e4ef3a50a3..88061a559e 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/EmailAddressValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/EmailAddressValueConverter.cs
@@ -6,16 +6,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class EmailAddressValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.EmailAddress);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
{
return source?.ToString() ?? string.Empty;
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/GridValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/GridValueConverter.cs
index 29f6de0271..b3685457ec 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/GridValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/GridValueConverter.cs
@@ -28,16 +28,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
_config = config;
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.Grid);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (JToken);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
var sourceString = source.ToString();
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs
index 79cb748960..6f5bd571b7 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs
@@ -14,19 +14,19 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
public class ImageCropperValueConverter : PropertyValueConverterBase
{
///
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.ImageCropper);
///
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (ImageCropperValue);
///
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
///
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
var sourceString = source.ToString();
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/IntegerValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/IntegerValueConverter.cs
index e0abf17a7e..ca8f23bca2 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/IntegerValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/IntegerValueConverter.cs
@@ -6,16 +6,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class IntegerValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> Constants.PropertyEditors.Aliases.Integer.Equals(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (int);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
return source.TryConvertTo().Result;
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/JsonValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/JsonValueConverter.cs
index e04893716a..12e6238705 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/JsonValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/JsonValueConverter.cs
@@ -31,19 +31,19 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
///
///
///
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
{
return _propertyEditors.TryGet(propertyType.EditorAlias, out var editor)
&& editor.GetValueEditor().ValueType.InvariantEquals(ValueTypes.Json);
}
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (JToken);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
var sourceString = source.ToString();
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/LabelValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/LabelValueConverter.cs
index 05a5f15aaf..84baf226cf 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/LabelValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/LabelValueConverter.cs
@@ -16,10 +16,10 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class LabelValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> Constants.PropertyEditors.Aliases.Label.Equals(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
{
var valueType = ConfigurationEditor.ConfigurationAs(propertyType.DataType.Configuration);
switch (valueType.ValueType)
@@ -40,10 +40,10 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
}
}
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
var valueType = ConfigurationEditor.ConfigurationAs(propertyType.DataType.Configuration);
switch (valueType.ValueType)
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs
index aeacf33eef..a062561ab1 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs
@@ -7,17 +7,17 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class MarkdownEditorValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> Constants.PropertyEditors.Aliases.MarkdownEditor.Equals(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IHtmlString);
// PropertyCacheLevel.Content is ok here because that converter does not parse {locallink} nor executes macros
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
// in xml a string is: string
// in the database a string is: string
@@ -25,13 +25,13 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
return source;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return new HtmlString(inter == null ? string.Empty : (string) inter);
}
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return inter?.ToString() ?? string.Empty;
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/MemberGroupPickerValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/MemberGroupPickerValueConverter.cs
index bdd09ea33b..cd7f48f510 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/MemberGroupPickerValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/MemberGroupPickerValueConverter.cs
@@ -6,16 +6,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class MemberGroupPickerValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.MemberGroupPicker);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
return source?.ToString() ?? string.Empty;
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/MultipleTextStringValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/MultipleTextStringValueConverter.cs
index 1d5f0b1ca3..15e7ce4caf 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/MultipleTextStringValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/MultipleTextStringValueConverter.cs
@@ -9,18 +9,18 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class MultipleTextStringValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> Constants.PropertyEditors.Aliases.MultipleTextstring.Equals(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IEnumerable);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
private static readonly string[] NewLineDelimiters = { "\r\n", "\r", "\n" };
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
// data is (both in database and xml):
//
@@ -58,7 +58,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
: values.ToArray();
}
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
var d = new XmlDocument();
var e = d.CreateElement("values");
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/MustBeStringValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/MustBeStringValueConverter.cs
index c9528c3e8b..b9c61bb169 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/MustBeStringValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/MustBeStringValueConverter.cs
@@ -22,16 +22,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
Constants.PropertyEditors.Aliases.MultiNodeTreePicker
};
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> Aliases.Contains(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
return source?.ToString();
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/RadioButtonListValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/RadioButtonListValueConverter.cs
index b99cc7e0e3..61adc9a93e 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/RadioButtonListValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/RadioButtonListValueConverter.cs
@@ -6,16 +6,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class RadioButtonListValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.RadioButtonList);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
var attempt = source.TryConvertTo();
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/SliderValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/SliderValueConverter.cs
index 31ab47223f..11502687b7 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/SliderValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/SliderValueConverter.cs
@@ -18,16 +18,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
_dataTypeService = dataTypeService ?? throw new ArgumentNullException(nameof(dataTypeService));
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.Slider);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> IsRangeDataType(propertyType.DataType.Id) ? typeof (Range) : typeof (decimal);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
{
if (source == null)
return null;
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs
index 9b857c2dff..b54c693c14 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs
@@ -19,16 +19,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
_dataTypeService = dataTypeService ?? throw new ArgumentNullException(nameof(dataTypeService));
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.Tags);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IEnumerable);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return Array.Empty();
@@ -43,7 +43,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
return source.ToString().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
{
return (string[]) source;
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/TextStringValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/TextStringValueConverter.cs
index 2368a1d034..7caa9a90cc 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/TextStringValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/TextStringValueConverter.cs
@@ -13,16 +13,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
Constants.PropertyEditors.Aliases.TextArea
};
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> PropertyTypeAliases.Contains(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
// in xml a string is: string
// in the database a string is: string
@@ -30,13 +30,13 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
return source;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return inter ?? string.Empty;
}
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return inter;
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/TinyMceValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/TinyMceValueConverter.cs
index 46f660d829..9938af671d 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/TinyMceValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/TinyMceValueConverter.cs
@@ -10,17 +10,17 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class TinyMceValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias == Constants.PropertyEditors.Aliases.TinyMce;
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IHtmlString);
// PropertyCacheLevel.Content is ok here because that converter does not parse {locallink} nor executes macros
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
// in xml a string is: string
// in the database a string is: string
@@ -28,13 +28,13 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
return source;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return new HtmlString(inter == null ? string.Empty : (string)inter);
}
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return inter;
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/UploadPropertyConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/UploadPropertyConverter.cs
index cfa247edaa..407ed13ddf 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/UploadPropertyConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/UploadPropertyConverter.cs
@@ -9,16 +9,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class UploadPropertyConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.Equals(Constants.PropertyEditors.Aliases.UploadField);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
{
return source?.ToString() ?? "";
}
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/YesNoValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/YesNoValueConverter.cs
index 8ad09733f8..153462ccf5 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/YesNoValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/YesNoValueConverter.cs
@@ -6,16 +6,16 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class YesNoValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias == Constants.PropertyEditors.Aliases.Boolean;
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (bool);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
// in xml a boolean is: string
// in the database a boolean is: string "1" or "0" or empty
@@ -49,7 +49,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
// default ConvertSourceToObject just returns source ie a boolean value
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a boolean already
return (bool)inter ? "1" : "0";
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index d6d0a1d9e5..20cc089d1d 100755
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -222,6 +222,7 @@
+
diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedProperty.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedProperty.cs
index 0c90c8d1ff..7d2fa74aa6 100644
--- a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedProperty.cs
+++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedProperty.cs
@@ -50,7 +50,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache
public override object GetXPathValue(string culture = null, string segment = null) { throw new NotImplementedException(); }
- public XmlPublishedProperty(PublishedPropertyType propertyType, IPublishedContent content, bool isPreviewing, XmlNode propertyXmlData)
+ public XmlPublishedProperty(IPublishedPropertyType propertyType, IPublishedContent content, bool isPreviewing, XmlNode propertyXmlData)
: this(propertyType, content, isPreviewing)
{
if (propertyXmlData == null)
@@ -58,7 +58,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache
_sourceValue = XmlHelper.GetNodeValue(propertyXmlData);
}
- public XmlPublishedProperty(PublishedPropertyType propertyType, IPublishedContent content, bool isPreviewing, string propertyData)
+ public XmlPublishedProperty(IPublishedPropertyType propertyType, IPublishedContent content, bool isPreviewing, string propertyData)
: this(propertyType, content, isPreviewing)
{
if (propertyData == null)
@@ -66,7 +66,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache
_sourceValue = propertyData;
}
- public XmlPublishedProperty(PublishedPropertyType propertyType, IPublishedContent content, bool isPreviewing)
+ public XmlPublishedProperty(IPublishedPropertyType propertyType, IPublishedContent content, bool isPreviewing)
: base(propertyType, PropertyCacheLevel.Unknown) // cache level is ignored
{
_sourceValue = string.Empty;
diff --git a/src/Umbraco.Tests/Published/ConvertersTests.cs b/src/Umbraco.Tests/Published/ConvertersTests.cs
index 0fce8ebfc3..f753acf82d 100644
--- a/src/Umbraco.Tests/Published/ConvertersTests.cs
+++ b/src/Umbraco.Tests/Published/ConvertersTests.cs
@@ -37,10 +37,12 @@ namespace Umbraco.Tests.Published
var contentTypeFactory = new PublishedContentTypeFactory(Mock.Of(), converters, dataTypeService);
- var elementType1 = contentTypeFactory.CreateContentType(1000, "element1", new[]
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
{
- contentTypeFactory.CreatePropertyType("prop1", 1),
- });
+ yield return contentTypeFactory.CreatePropertyType(contentType, "prop1", 1);
+ }
+
+ var elementType1 = contentTypeFactory.CreateContentType(1000, "element1", CreatePropertyTypes);
var element1 = new PublishedElement(elementType1, Guid.NewGuid(), new Dictionary { { "prop1", "1234" } }, false);
@@ -70,22 +72,22 @@ namespace Umbraco.Tests.Published
}
}
- public bool IsConverter(PublishedPropertyType propertyType)
+ public bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals("Umbraco.Void");
- public Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (int);
- public PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
- public object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
=> int.TryParse(source as string, out int i) ? i : 0;
- public object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
=> (int) inter;
- public object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
=> ((int) inter).ToString();
}
@@ -115,10 +117,12 @@ namespace Umbraco.Tests.Published
var contentTypeFactory = new PublishedContentTypeFactory(Mock.Of(), converters, dataTypeService);
- var elementType1 = contentTypeFactory.CreateContentType(1000, "element1", new[]
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
{
- contentTypeFactory.CreatePropertyType("prop1", 1),
- });
+ yield return contentTypeFactory.CreatePropertyType(contentType, "prop1", 1);
+ }
+
+ var elementType1 = contentTypeFactory.CreateContentType(1000, "element1", CreatePropertyTypes);
var element1 = new PublishedElement(elementType1, Guid.NewGuid(), new Dictionary { { "prop1", "1234" } }, false);
@@ -143,26 +147,26 @@ namespace Umbraco.Tests.Published
public bool? IsValue(object value, PropertyValueLevel level)
=> value != null && (!(value is string) || string.IsNullOrWhiteSpace((string) value) == false);
- public bool IsConverter(PublishedPropertyType propertyType)
+ public bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals("Umbraco.Void");
- public Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public Type GetPropertyValueType(IPublishedPropertyType propertyType)
// the first version would be the "generic" version, but say we want to be more precise
// and return: whatever Clr type is generated for content type with alias "cnt1" -- which
// we cannot really typeof() at the moment because it has not been generated, hence ModelType.
// => typeof (IPublishedContent);
=> ModelType.For("cnt1");
- public PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> _cacheLevel;
- public object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
=> int.TryParse(source as string, out int i) ? i : -1;
- public object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
=> _publishedSnapshotAccessor.PublishedSnapshot.Content.GetById((int) inter);
- public object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
=> ((int) inter).ToString();
}
@@ -208,25 +212,15 @@ namespace Umbraco.Tests.Published
var contentTypeFactory = new PublishedContentTypeFactory(factory, converters, dataTypeService);
- var elementType1 = contentTypeFactory.CreateContentType(1000, "element1", new[]
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType, int i)
{
- contentTypeFactory.CreatePropertyType("prop1", 1),
- });
+ yield return contentTypeFactory.CreatePropertyType(contentType, "prop" + i, i);
+ }
- var elementType2 = contentTypeFactory.CreateContentType(1001, "element2", new[]
- {
- contentTypeFactory.CreatePropertyType("prop2", 2),
- });
-
- var contentType1 = contentTypeFactory.CreateContentType(1002, "content1", new[]
- {
- contentTypeFactory.CreatePropertyType("prop1", 1),
- });
-
- var contentType2 = contentTypeFactory.CreateContentType(1003, "content2", new[]
- {
- contentTypeFactory.CreatePropertyType("prop2", 2),
- });
+ var elementType1 = contentTypeFactory.CreateContentType(1000, "element1", t => CreatePropertyTypes(t, 1));
+ var elementType2 = contentTypeFactory.CreateContentType(1001, "element2", t => CreatePropertyTypes(t, 2));
+ var contentType1 = contentTypeFactory.CreateContentType(1002, "content1", t => CreatePropertyTypes(t, 1));
+ var contentType2 = contentTypeFactory.CreateContentType(1003, "content2", t => CreatePropertyTypes(t, 2));
var element1 = new PublishedElement(elementType1, Guid.NewGuid(), new Dictionary { { "prop1", "val1" } }, false);
var element2 = new PublishedElement(elementType2, Guid.NewGuid(), new Dictionary { { "prop2", "1003" } }, false);
@@ -267,13 +261,13 @@ namespace Umbraco.Tests.Published
public class SimpleConverter3A : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias == "Umbraco.Void";
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
}
@@ -286,22 +280,22 @@ namespace Umbraco.Tests.Published
_publishedSnapshotAccessor = publishedSnapshotAccessor;
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias == "Umbraco.Void.2";
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IEnumerable<>).MakeGenericType(ModelType.For("content1"));
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Elements;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
var s = source as string;
return s?.Split(',').Select(int.Parse).ToArray() ?? Array.Empty();
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
return ((int[]) inter).Select(x => (PublishedSnapshotTestObjects.TestContentModel1) _publishedSnapshotAccessor.PublishedSnapshot.Content.GetById(x)).ToArray();
}
diff --git a/src/Umbraco.Tests/Published/NestedContentTests.cs b/src/Umbraco.Tests/Published/NestedContentTests.cs
index 35be4b0bf2..09c63dcf06 100644
--- a/src/Umbraco.Tests/Published/NestedContentTests.cs
+++ b/src/Umbraco.Tests/Published/NestedContentTests.cs
@@ -125,13 +125,24 @@ namespace Umbraco.Tests.Published
var factory = new PublishedContentTypeFactory(publishedModelFactory.Object, converters, dataTypeService);
- var propertyType1 = factory.CreatePropertyType("property1", 1);
- var propertyType2 = factory.CreatePropertyType("property2", 2);
- var propertyTypeN1 = factory.CreatePropertyType("propertyN1", 3);
+ IEnumerable CreatePropertyTypes1(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "property1", 1);
+ }
- var contentType1 = factory.CreateContentType(1, "content1", new[] { propertyType1 });
- var contentType2 = factory.CreateContentType(2, "content2", new[] { propertyType2 });
- var contentTypeN1 = factory.CreateContentType(2, "contentN1", new[] { propertyTypeN1 }, isElement: true);
+ IEnumerable CreatePropertyTypes2(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "property2", 2);
+ }
+
+ IEnumerable CreatePropertyTypesN1(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "propertyN1", 3);
+ }
+
+ var contentType1 = factory.CreateContentType(1, "content1", CreatePropertyTypes1);
+ var contentType2 = factory.CreateContentType(2, "content2", CreatePropertyTypes2);
+ var contentTypeN1 = factory.CreateContentType(2, "contentN1", CreatePropertyTypesN1, isElement: true);
// mocked content cache returns content types
contentCache
@@ -219,14 +230,14 @@ namespace Umbraco.Tests.Published
private readonly bool _hasValue;
private IPublishedElement _owner;
- public TestPublishedProperty(PublishedPropertyType propertyType, object source)
+ public TestPublishedProperty(IPublishedPropertyType propertyType, object source)
: base(propertyType, PropertyCacheLevel.Element) // initial reference cache level always is .Content
{
_sourceValue = source;
_hasValue = source != null && (!(source is string ssource) || !string.IsNullOrWhiteSpace(ssource));
}
- public TestPublishedProperty(PublishedPropertyType propertyType, IPublishedElement element, bool preview, PropertyCacheLevel referenceCacheLevel, object source)
+ public TestPublishedProperty(IPublishedPropertyType propertyType, IPublishedElement element, bool preview, PropertyCacheLevel referenceCacheLevel, object source)
: base(propertyType, referenceCacheLevel)
{
_sourceValue = source;
diff --git a/src/Umbraco.Tests/Published/PropertyCacheLevelTests.cs b/src/Umbraco.Tests/Published/PropertyCacheLevelTests.cs
index 76fdd81ec2..9db539d142 100644
--- a/src/Umbraco.Tests/Published/PropertyCacheLevelTests.cs
+++ b/src/Umbraco.Tests/Published/PropertyCacheLevelTests.cs
@@ -35,10 +35,13 @@ namespace Umbraco.Tests.Published
new DataType(new VoidEditor(Mock.Of())) { Id = 1 });
var publishedContentTypeFactory = new PublishedContentTypeFactory(Mock.Of(), converters, dataTypeService);
- var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", new[]
+
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
{
- publishedContentTypeFactory.CreatePropertyType("prop1", 1),
- });
+ yield return publishedContentTypeFactory.CreatePropertyType(contentType, "prop1", 1);
+ }
+
+ var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", CreatePropertyTypes);
// PublishedElementPropertyBase.GetCacheLevels:
//
@@ -113,10 +116,13 @@ namespace Umbraco.Tests.Published
new DataType(new VoidEditor(Mock.Of())) { Id = 1 });
var publishedContentTypeFactory = new PublishedContentTypeFactory(Mock.Of(), converters, dataTypeService);
- var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", new[]
+
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
{
- publishedContentTypeFactory.CreatePropertyType("prop1", 1),
- });
+ yield return publishedContentTypeFactory.CreatePropertyType(contentType, "prop1", 1);
+ }
+
+ var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", CreatePropertyTypes);
var elementsCache = new FastDictionaryAppCache();
var snapshotCache = new FastDictionaryAppCache();
@@ -187,10 +193,13 @@ namespace Umbraco.Tests.Published
new DataType(new VoidEditor(Mock.Of())) { Id = 1 });
var publishedContentTypeFactory = new PublishedContentTypeFactory(Mock.Of(), converters, dataTypeService);
- var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", new[]
+
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
{
- publishedContentTypeFactory.CreatePropertyType("prop1", 1),
- });
+ yield return publishedContentTypeFactory.CreatePropertyType(contentType, "prop1", 1);
+ }
+
+ var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", CreatePropertyTypes);
Assert.Throws(() =>
{
@@ -213,28 +222,28 @@ namespace Umbraco.Tests.Published
public bool? IsValue(object value, PropertyValueLevel level)
=> value != null && (!(value is string) || string.IsNullOrWhiteSpace((string) value) == false);
- public bool IsConverter(PublishedPropertyType propertyType)
+ public bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.InvariantEquals("Umbraco.Void");
- public Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof(int);
- public PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> _cacheLevel;
- public object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
SourceConverts++;
return int.TryParse(source as string, out int i) ? i : 0;
}
- public object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
InterConverts++;
return (int) inter;
}
- public object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
=> ((int) inter).ToString();
}
}
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs
index 108bfb9f18..5c28b98de7 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs
@@ -65,17 +65,22 @@ namespace Umbraco.Tests.PublishedContent
var welcome2Type = factory.CreatePropertyType("welcomeText2", 1, variations: ContentVariation.Culture);
var nopropType = factory.CreatePropertyType("noprop", 1, variations: ContentVariation.Culture);
- var props = new[]
- {
- prop1Type,
- welcomeType,
- welcome2Type,
- nopropType
- };
- var contentType1 = factory.CreateContentType(1, "ContentType1", Enumerable.Empty(), props);
+ IEnumerable CreatePropertyTypes1(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "prop1", 1, variations: ContentVariation.Culture);
+ yield return factory.CreatePropertyType(contentType, "welcomeText", 1, variations: ContentVariation.Culture);
+ yield return factory.CreatePropertyType(contentType, "welcomeText2", 1, variations: ContentVariation.Culture);
+ yield return factory.CreatePropertyType(contentType, "noprop", 1, variations: ContentVariation.Culture);
+ }
- var prop3Type = factory.CreatePropertyType("prop3", 1, variations: ContentVariation.Culture);
- var contentType2 = factory.CreateContentType(2, "contentType2", Enumerable.Empty(), new[] { prop3Type });
+ var contentType1 = factory.CreateContentType(1, "ContentType1", Enumerable.Empty(), CreatePropertyTypes1);
+
+ IEnumerable CreatePropertyTypes2(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "prop3", 1, variations: ContentVariation.Culture);
+ }
+
+ var contentType2 = factory.CreateContentType(2, "contentType2", Enumerable.Empty(), CreatePropertyTypes2);
var prop1 = new SolidPublishedPropertyWithLanguageVariants
{
@@ -150,7 +155,7 @@ namespace Umbraco.Tests.PublishedContent
var prop4 = new SolidPublishedPropertyWithLanguageVariants
{
Alias = "prop3",
- PropertyType = prop3Type
+ PropertyType = contentType2.GetPropertyType("prop3")
};
prop4.SetSourceValue("en-US", "Oxxo", true);
prop4.SetValue("en-US", "Oxxo", true);
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentMoreTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentMoreTests.cs
index b2f1f311c3..48ad4aa464 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentMoreTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentMoreTests.cs
@@ -1,4 +1,5 @@
-using System.Collections.ObjectModel;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using NUnit.Framework;
using Umbraco.Core.Models.PublishedContent;
@@ -15,13 +16,14 @@ namespace Umbraco.Tests.PublishedContent
{
internal override void PopulateCache(PublishedContentTypeFactory factory, SolidPublishedContentCache cache)
{
- var props = new[]
- {
- factory.CreatePropertyType("prop1", 1),
- };
- var contentType1 = factory.CreateContentType(1, "ContentType1", Enumerable.Empty(), props);
- var contentType2 = factory.CreateContentType(2, "ContentType2", Enumerable.Empty(), props);
- var contentType2Sub = factory.CreateContentType(3, "ContentType2Sub", Enumerable.Empty(), props);
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "prop1", 1);
+ }
+
+ var contentType1 = factory.CreateContentType(1, "ContentType1", Enumerable.Empty(), CreatePropertyTypes);
+ var contentType2 = factory.CreateContentType(2, "ContentType2", Enumerable.Empty(), CreatePropertyTypes);
+ var contentType2Sub = factory.CreateContentType(3, "ContentType2Sub", Enumerable.Empty(), CreatePropertyTypes);
cache.Add(new SolidPublishedContent(contentType1)
{
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs
index c5bcd29589..6907f6936c 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs
@@ -1,4 +1,5 @@
-using Umbraco.Core;
+using System.Collections.Generic;
+using Umbraco.Core;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.PropertyEditors.ValueConverters;
@@ -41,13 +42,12 @@ namespace Umbraco.Tests.PublishedContent
var publishedContentTypeFactory = new PublishedContentTypeFactory(Mock.Of(), converters, dataTypeService);
- // need to specify a custom callback for unit tests
- var propertyTypes = new[]
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
{
- // AutoPublishedContentType will auto-generate other properties
- publishedContentTypeFactory.CreatePropertyType("content", 1),
- };
- var type = new AutoPublishedContentType(0, "anything", propertyTypes);
+ yield return publishedContentTypeFactory.CreatePropertyType(contentType, "content", 1);
+ }
+
+ var type = new AutoPublishedContentType(0, "anything", CreatePropertyTypes);
ContentTypesCache.GetPublishedContentTypeByAlias = alias => type;
var umbracoContext = GetUmbracoContext("/test");
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
index 605fae7a1b..8be13345fb 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
@@ -62,18 +63,19 @@ namespace Umbraco.Tests.PublishedContent
// when they are requested, but we must declare those that we
// explicitely want to be here...
- var propertyTypes = new[]
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
{
// AutoPublishedContentType will auto-generate other properties
- factory.CreatePropertyType("umbracoNaviHide", 1001),
- factory.CreatePropertyType("selectedNodes", 1),
- factory.CreatePropertyType("umbracoUrlAlias", 1),
- factory.CreatePropertyType("content", 1002),
- factory.CreatePropertyType("testRecursive", 1),
- };
+ yield return factory.CreatePropertyType(contentType, "umbracoNaviHide", 1001);
+ yield return factory.CreatePropertyType(contentType, "selectedNodes", 1);
+ yield return factory.CreatePropertyType(contentType, "umbracoUrlAlias", 1);
+ yield return factory.CreatePropertyType(contentType, "content", 1002);
+ yield return factory.CreatePropertyType(contentType, "testRecursive", 1);
+ }
+
var compositionAliases = new[] { "MyCompositionAlias" };
- var anythingType = new AutoPublishedContentType(0, "anything", compositionAliases, propertyTypes);
- var homeType = new AutoPublishedContentType(0, "home", compositionAliases, propertyTypes);
+ var anythingType = new AutoPublishedContentType(0, "anything", compositionAliases, CreatePropertyTypes);
+ var homeType = new AutoPublishedContentType(0, "home", compositionAliases, CreatePropertyTypes);
ContentTypesCache.GetPublishedContentTypeByAlias = alias => alias.InvariantEquals("home") ? homeType : anythingType;
}
@@ -887,8 +889,13 @@ namespace Umbraco.Tests.PublishedContent
{
var factory = Factory.GetInstance() as PublishedContentTypeFactory;
- var pt = factory.CreatePropertyType("detached", 1003);
- var ct = factory.CreateContentType(0, "alias", new[] { pt });
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "detached", 1003);
+ }
+
+ var ct = factory.CreateContentType(0, "alias", CreatePropertyTypes);
+ var pt = ct.GetPropertyType("detached");
var prop = new PublishedElementPropertyBase(pt, null, false, PropertyCacheLevel.None, 5548);
Assert.IsInstanceOf(prop.GetValue());
Assert.AreEqual(5548, prop.GetValue());
@@ -906,16 +913,20 @@ namespace Umbraco.Tests.PublishedContent
{
var factory = Factory.GetInstance() as PublishedContentTypeFactory;
- var pt1 = factory.CreatePropertyType("legend", 1004);
- var pt2 = factory.CreatePropertyType("image", 1005);
- var pt3 = factory.CreatePropertyType("size", 1003);
+ IEnumerable CreatePropertyTypes(IPublishedContentType contentType)
+ {
+ yield return factory.CreatePropertyType(contentType, "legend", 1004);
+ yield return factory.CreatePropertyType(contentType, "image", 1005);
+ yield return factory.CreatePropertyType(contentType, "size", 1003);
+ }
+
const string val1 = "boom bam";
const int val2 = 0;
const int val3 = 666;
var guid = Guid.NewGuid();
- var ct = factory.CreateContentType(0, "alias", new[] { pt1, pt2, pt3 });
+ var ct = factory.CreateContentType(0, "alias", CreatePropertyTypes);
var c = new ImageWithLegendModel(ct, guid, new Dictionary
{
diff --git a/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs b/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs
index c14a8c1740..f7d016f725 100644
--- a/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs
+++ b/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs
@@ -253,7 +253,7 @@ namespace Umbraco.Tests.PublishedContent
internal class SolidPublishedProperty : IPublishedProperty
{
- public PublishedPropertyType PropertyType { get; set; }
+ public IPublishedPropertyType PropertyType { get; set; }
public string Alias { get; set; }
public object SolidSourceValue { get; set; }
public object SolidValue { get; set; }
@@ -397,7 +397,7 @@ namespace Umbraco.Tests.PublishedContent
class AutoPublishedContentType : PublishedContentType
{
- private static readonly PublishedPropertyType Default;
+ private static readonly IPublishedPropertyType Default;
static AutoPublishedContentType()
{
@@ -412,11 +412,19 @@ namespace Umbraco.Tests.PublishedContent
: base(id, alias, PublishedItemType.Content, Enumerable.Empty(), propertyTypes, ContentVariation.Nothing)
{ }
+ public AutoPublishedContentType(int id, string alias, Func> propertyTypes)
+ : base(id, alias, PublishedItemType.Content, Enumerable.Empty(), propertyTypes, ContentVariation.Nothing)
+ { }
+
public AutoPublishedContentType(int id, string alias, IEnumerable compositionAliases, IEnumerable propertyTypes)
: base(id, alias, PublishedItemType.Content, compositionAliases, propertyTypes, ContentVariation.Nothing)
{ }
- public override PublishedPropertyType GetPropertyType(string alias)
+ public AutoPublishedContentType(int id, string alias, IEnumerable compositionAliases, Func> propertyTypes)
+ : base(id, alias, PublishedItemType.Content, compositionAliases, propertyTypes, ContentVariation.Nothing)
+ { }
+
+ public override IPublishedPropertyType GetPropertyType(string alias)
{
var propertyType = base.GetPropertyType(alias);
return propertyType ?? Default;
diff --git a/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs b/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs
index 0ff2a41867..978bbbcecb 100644
--- a/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs
+++ b/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs
@@ -140,14 +140,14 @@ namespace Umbraco.Web.Macros
private readonly object _sourceValue;
private readonly IPublishedContent _content;
- public PagePublishedProperty(PublishedPropertyType propertyType, IPublishedContent content)
+ public PagePublishedProperty(IPublishedPropertyType propertyType, IPublishedContent content)
: base(propertyType, PropertyCacheLevel.Unknown) // cache level is ignored
{
_sourceValue = null;
_content = content;
}
- public PagePublishedProperty(PublishedPropertyType propertyType, IPublishedContent content, Umbraco.Core.Models.Property property)
+ public PagePublishedProperty(IPublishedPropertyType propertyType, IPublishedContent content, Umbraco.Core.Models.Property property)
: base(propertyType, PropertyCacheLevel.Unknown) // cache level is ignored
{
_sourceValue = property.GetValue();
diff --git a/src/Umbraco.Web/Models/PublishedProperty.cs b/src/Umbraco.Web/Models/PublishedProperty.cs
index d32612c54c..f715df7450 100644
--- a/src/Umbraco.Web/Models/PublishedProperty.cs
+++ b/src/Umbraco.Web/Models/PublishedProperty.cs
@@ -19,8 +19,8 @@ namespace Umbraco.Web.Models
/// and taking values from the collection of Property.
/// Ensures that all conversions took place correctly.
internal static IEnumerable MapProperties(
- IEnumerable propertyTypes, IEnumerable properties,
- Func map)
+ IEnumerable propertyTypes, IEnumerable properties,
+ Func map)
{
var propertyEditors = Current.PropertyEditors;
var dataTypeService = Current.Services.DataTypeService;
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/ContentPickerValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/ContentPickerValueConverter.cs
index d30762f13f..056334cfa5 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/ContentPickerValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/ContentPickerValueConverter.cs
@@ -23,16 +23,16 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
_publishedSnapshotAccessor = publishedSnapshotAccessor;
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias.Equals(Constants.PropertyEditors.Aliases.ContentPicker);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IPublishedContent);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Elements;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
@@ -45,7 +45,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return null;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
if (inter == null)
return null;
@@ -73,7 +73,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return inter;
}
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
if (inter == null) return null;
return inter.ToString();
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs
index 43add34327..0d6089f0f4 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs
@@ -11,12 +11,12 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class FlexibleDropdownPropertyValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
{
return propertyType.EditorAlias.Equals(Constants.PropertyEditors.Aliases.DropDownListFlexible);
}
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if(source == null) return Array.Empty();
@@ -24,7 +24,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return JsonConvert.DeserializeObject(source.ToString()) ?? Array.Empty();
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
if (inter == null)
return null;
@@ -43,7 +43,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
: string.Empty;
}
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
{
return propertyType.DataType.ConfigurationAs().Multiple
? typeof(IEnumerable)
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/MacroContainerValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/MacroContainerValueConverter.cs
index e6e66b79ff..ef356e3604 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/MacroContainerValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/MacroContainerValueConverter.cs
@@ -28,13 +28,13 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
_macroRenderer = macroRenderer ?? throw new ArgumentNullException(nameof(macroRenderer));
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> propertyType.EditorAlias == Constants.PropertyEditors.Aliases.MacroContainer;
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IHtmlString);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Snapshot;
// NOT thread-safe over a request because it modifies the
@@ -63,7 +63,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
}
}
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
var sourceString = source.ToString();
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs
index cb9709157f..e11f3e0d3a 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs
@@ -12,16 +12,16 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class MarkdownEditorValueConverter : PropertyValueConverterBase
{
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> Constants.PropertyEditors.Aliases.MarkdownEditor == propertyType.EditorAlias;
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IHtmlString);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Snapshot;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
var sourceString = source.ToString();
@@ -33,7 +33,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return sourceString;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// convert markup to HTML for frontend rendering.
// source should come from ConvertSource and be a string (or null) already
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/MediaPickerValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/MediaPickerValueConverter.cs
index 0218867bb4..d2272a25b5 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/MediaPickerValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/MediaPickerValueConverter.cs
@@ -29,12 +29,12 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
_publishedModelFactory = publishedModelFactory;
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
{
return propertyType.EditorAlias.Equals(Constants.PropertyEditors.Aliases.MediaPicker);
}
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
{
var isMultiple = IsMultipleDataType(propertyType.DataType);
var isOnlyImages = IsOnlyImagesDataType(propertyType.DataType);
@@ -48,7 +48,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
: typeof(IPublishedContent);
}
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Snapshot;
private bool IsMultipleDataType(PublishedDataType dataType)
@@ -63,7 +63,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return config.OnlyImages;
}
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType,
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType,
object source, bool preview)
{
if (source == null) return null;
@@ -75,7 +75,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return nodeIds;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType,
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType,
PropertyCacheLevel cacheLevel, object source, bool preview)
{
var isMultiple = IsMultipleDataType(propertyType.DataType);
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/MemberPickerValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/MemberPickerValueConverter.cs
index b4c7f99a75..cd69fd9de6 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/MemberPickerValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/MemberPickerValueConverter.cs
@@ -18,18 +18,18 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
_publishedSnapshotAccessor = publishedSnapshotAccessor ?? throw new ArgumentNullException(nameof(publishedSnapshotAccessor));
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
{
return propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.MemberPicker);
}
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Snapshot;
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IPublishedContent);
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
var attemptConvertInt = source.TryConvertTo();
if (attemptConvertInt.Success)
@@ -40,7 +40,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return null;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
{
if (source == null)
return null;
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs
index a210aa62c6..f80f8f510f 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs
@@ -34,18 +34,18 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
_publishedSnapshotAccessor = publishedSnapshotAccessor ?? throw new ArgumentNullException(nameof(publishedSnapshotAccessor));
}
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
{
return propertyType.EditorAlias.Equals(Constants.PropertyEditors.Aliases.MultiNodeTreePicker);
}
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Snapshot;
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (IEnumerable);
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
@@ -60,7 +60,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return null;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
{
if (source == null)
{
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs
index 48cec2a3d2..87ab5b8ff9 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs
@@ -23,20 +23,20 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
_proflog = proflog ?? throw new ArgumentNullException(nameof(proflog));
}
- public override bool IsConverter(PublishedPropertyType propertyType) => Constants.PropertyEditors.Aliases.MultiUrlPicker.Equals(propertyType.EditorAlias);
+ public override bool IsConverter(IPublishedPropertyType propertyType) => Constants.PropertyEditors.Aliases.MultiUrlPicker.Equals(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType) =>
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType) =>
propertyType.DataType.ConfigurationAs().MaxNumber == 1 ?
typeof(Link) :
typeof(IEnumerable);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType) => PropertyCacheLevel.Snapshot;
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType) => PropertyCacheLevel.Snapshot;
public override bool? IsValue(object value, PropertyValueLevel level) => value?.ToString() != "[]";
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview) => source?.ToString();
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview) => source?.ToString();
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
using (_proflog.DebugDuration($"ConvertPropertyToLinks ({propertyType.DataType.Id})"))
{
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentManyValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentManyValueConverter.cs
index 93e4afc7e5..74b2af6498 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentManyValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentManyValueConverter.cs
@@ -28,11 +28,11 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
}
///
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> IsNestedMany(propertyType);
///
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
{
var contentTypes = propertyType.DataType.ConfigurationAs().ContentTypes;
return contentTypes.Length > 1
@@ -41,19 +41,19 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
}
///
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
///
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
return source?.ToString();
}
///
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
- using (_proflog.DebugDuration($"ConvertPropertyToNestedContent ({propertyType.DataType.Id})"))
+ using (_proflog.DebugDuration($"ConvertPropertyToNestedContent ({propertyType.DataType.Id})"))
{
var configuration = propertyType.DataType.ConfigurationAs();
var contentTypes = configuration.ContentTypes;
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentSingleValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentSingleValueConverter.cs
index e084b3a343..06aa0b42fb 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentSingleValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentSingleValueConverter.cs
@@ -27,11 +27,11 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
}
///
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> IsNestedSingle(propertyType);
///
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
{
var contentTypes = propertyType.DataType.ConfigurationAs().ContentTypes;
return contentTypes.Length > 1
@@ -40,19 +40,19 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
}
///
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Element;
///
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
return source?.ToString();
}
///
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
- using (_proflog.DebugDuration($"ConvertPropertyToNestedContent ({propertyType.DataType.Id})"))
+ using (_proflog.DebugDuration($"ConvertPropertyToNestedContent ({propertyType.DataType.Id})"))
{
var value = (string) inter;
if (string.IsNullOrWhiteSpace(value)) return null;
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentValueConverterBase.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentValueConverterBase.cs
index e3723e2221..7c18d8ebca 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentValueConverterBase.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/NestedContentValueConverterBase.cs
@@ -20,12 +20,12 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
protected IPublishedModelFactory PublishedModelFactory { get; }
- public static bool IsNested(PublishedPropertyType publishedProperty)
+ public static bool IsNested(IPublishedPropertyType publishedProperty)
{
return publishedProperty.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.NestedContent);
}
- public static bool IsNestedSingle(PublishedPropertyType publishedProperty)
+ public static bool IsNestedSingle(IPublishedPropertyType publishedProperty)
{
if (!IsNested(publishedProperty))
return false;
@@ -34,7 +34,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return config.MinItems == 1 && config.MaxItems == 1;
}
- public static bool IsNestedMany(PublishedPropertyType publishedProperty)
+ public static bool IsNestedMany(IPublishedPropertyType publishedProperty)
{
return IsNested(publishedProperty) && !IsNestedSingle(publishedProperty);
}
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/RteMacroRenderingValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/RteMacroRenderingValueConverter.cs
index fbbf058c49..990ef8daf1 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/RteMacroRenderingValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/RteMacroRenderingValueConverter.cs
@@ -24,7 +24,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
private readonly IMacroRenderer _macroRenderer;
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
{
// because that version of RTE converter parses {locallink} and executes macros, its value has
// to be cached at the published snapshot level, because we have no idea what the macros may depend on actually.
@@ -63,7 +63,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
}
}
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null)
{
diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/TextStringValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/TextStringValueConverter.cs
index 2d5c322f58..b8ad1477b4 100644
--- a/src/Umbraco.Web/PropertyEditors/ValueConverters/TextStringValueConverter.cs
+++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/TextStringValueConverter.cs
@@ -17,16 +17,16 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
Constants.PropertyEditors.Aliases.TextArea
};
- public override bool IsConverter(PublishedPropertyType propertyType)
+ public override bool IsConverter(IPublishedPropertyType propertyType)
=> PropertyTypeAliases.Contains(propertyType.EditorAlias);
- public override Type GetPropertyValueType(PublishedPropertyType propertyType)
+ public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
=> typeof (string);
- public override PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType)
+ public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
=> PropertyCacheLevel.Snapshot;
- public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview)
+ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object source, bool preview)
{
if (source == null) return null;
var sourceString = source.ToString();
@@ -38,13 +38,13 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return sourceString;
}
- public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return inter ?? string.Empty;
}
- public override object ConvertIntermediateToXPath(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
+ public override object ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
// source should come from ConvertSource and be a string (or null) already
return inter;
diff --git a/src/Umbraco.Web/PublishedCache/NuCache/Property.cs b/src/Umbraco.Web/PublishedCache/NuCache/Property.cs
index 2c8bc94d90..0254b815c1 100644
--- a/src/Umbraco.Web/PublishedCache/NuCache/Property.cs
+++ b/src/Umbraco.Web/PublishedCache/NuCache/Property.cs
@@ -38,12 +38,12 @@ namespace Umbraco.Web.PublishedCache.NuCache
private string _valuesCacheKey;
// initializes a published content property with no value
- public Property(PublishedPropertyType propertyType, PublishedContent content, IPublishedSnapshotAccessor publishedSnapshotAccessor, PropertyCacheLevel referenceCacheLevel = PropertyCacheLevel.Element)
+ public Property(IPublishedPropertyType propertyType, PublishedContent content, IPublishedSnapshotAccessor publishedSnapshotAccessor, PropertyCacheLevel referenceCacheLevel = PropertyCacheLevel.Element)
: this(propertyType, content, null, publishedSnapshotAccessor, referenceCacheLevel)
{ }
// initializes a published content property with a value
- public Property(PublishedPropertyType propertyType, PublishedContent content, PropertyData[] sourceValues, IPublishedSnapshotAccessor publishedSnapshotAccessor, PropertyCacheLevel referenceCacheLevel = PropertyCacheLevel.Element)
+ public Property(IPublishedPropertyType propertyType, PublishedContent content, PropertyData[] sourceValues, IPublishedSnapshotAccessor publishedSnapshotAccessor, PropertyCacheLevel referenceCacheLevel = PropertyCacheLevel.Element)
: base(propertyType, referenceCacheLevel)
{
if (sourceValues != null)
diff --git a/src/Umbraco.Web/PublishedCache/PublishedElementPropertyBase.cs b/src/Umbraco.Web/PublishedCache/PublishedElementPropertyBase.cs
index 62f72a27aa..ef62a3254d 100644
--- a/src/Umbraco.Web/PublishedCache/PublishedElementPropertyBase.cs
+++ b/src/Umbraco.Web/PublishedCache/PublishedElementPropertyBase.cs
@@ -26,7 +26,7 @@ namespace Umbraco.Web.PublishedCache
// so making it configurable.
private const bool FullCacheWhenPreviewing = true;
- public PublishedElementPropertyBase(PublishedPropertyType propertyType, IPublishedElement element, bool previewing, PropertyCacheLevel referenceCacheLevel, object sourceValue = null, IPublishedSnapshotAccessor publishedSnapshotAccessor = null)
+ public PublishedElementPropertyBase(IPublishedPropertyType propertyType, IPublishedElement element, bool previewing, PropertyCacheLevel referenceCacheLevel, object sourceValue = null, IPublishedSnapshotAccessor publishedSnapshotAccessor = null)
: base(propertyType, referenceCacheLevel)
{
_sourceValue = sourceValue;