Skip to content

Commit 6e5f7bc

Browse files
committed
Don't use static variables! Fixes #60
1 parent be0a0b4 commit 6e5f7bc

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/RJP.MultiUrlPicker/MultiUrlPickerValueConverter.cs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace RJP.MultiUrlPicker
1+
namespace RJP.MultiUrlPicker
22
{
33
using System;
44
using System.Linq;
@@ -16,7 +16,16 @@
1616

1717
public class MultiUrlPickerValueConverter : PropertyValueConverterBase, IPropertyValueConverterMeta
1818
{
19-
private static int _maxNumberOfItems;
19+
private readonly IDataTypeService _dataTypeService;
20+
21+
public MultiUrlPickerValueConverter(IDataTypeService dataTypeService)
22+
{
23+
_dataTypeService = dataTypeService;
24+
}
25+
26+
public MultiUrlPickerValueConverter() : this(ApplicationContext.Current.Services.DataTypeService)
27+
{
28+
}
2029

2130
public override bool IsConverter(PublishedPropertyType propertyType)
2231
{
@@ -34,7 +43,7 @@ public override object ConvertDataToSource(PublishedPropertyType propertyType, o
3443

3544
public override object ConvertSourceToObject(PublishedPropertyType propertyType, object source, bool preview)
3645
{
37-
bool isMultiple = IsMultipleDataType(propertyType.DataTypeId);
46+
bool isMultiple = IsMultipleDataType(propertyType.DataTypeId, out int maxNumberOfItems);
3847
if (source == null)
3948
{
4049
return isMultiple ? new MultiUrls() : null;
@@ -43,9 +52,9 @@ public override object ConvertSourceToObject(PublishedPropertyType propertyType,
4352
var urls = new MultiUrls((JArray)source);
4453
if(isMultiple)
4554
{
46-
if(_maxNumberOfItems > 0)
55+
if(maxNumberOfItems > 0)
4756
{
48-
return urls.Take(_maxNumberOfItems);
57+
return urls.Take(maxNumberOfItems);
4958
}
5059
return urls;
5160
}
@@ -54,7 +63,7 @@ public override object ConvertSourceToObject(PublishedPropertyType propertyType,
5463

5564
public Type GetPropertyValueType(PublishedPropertyType propertyType)
5665
{
57-
if (IsMultipleDataType(propertyType.DataTypeId))
66+
if (IsMultipleDataType(propertyType.DataTypeId, out int maxNumberOfItems))
5867
{
5968
return typeof(IEnumerable<Link>);
6069
}
@@ -75,16 +84,14 @@ public PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyTy
7584
return PropertyCacheLevel.None;
7685
}
7786

78-
private static bool IsMultipleDataType(int dataTypeId)
87+
private bool IsMultipleDataType(int dataTypeId, out int maxNumberOfItems)
7988
{
80-
IDataTypeService dataTypeService = ApplicationContext.Current.Services.DataTypeService;
81-
IDictionary<string, PreValue> preValues = dataTypeService
89+
IDictionary<string, PreValue> preValues = _dataTypeService
8290
.GetPreValuesCollectionByDataTypeId(dataTypeId)
8391
.PreValuesAsDictionary;
8492

85-
PreValue maxNumberOfItems;
86-
if (preValues.TryGetValue("maxNumberOfItems", out maxNumberOfItems) &&
87-
int.TryParse(maxNumberOfItems.Value, out _maxNumberOfItems))
93+
if (preValues.TryGetValue("maxNumberOfItems", out PreValue maxNumberOfItemsPreValue) &&
94+
int.TryParse(maxNumberOfItemsPreValue.Value, out maxNumberOfItems))
8895
{
8996
PreValue versionPreValue;
9097
Version version;
@@ -94,9 +101,11 @@ private static bool IsMultipleDataType(int dataTypeId)
94101
Version.TryParse(versionPreValue.Value, out version)
95102
&& version >= new Version(2, 0, 0))
96103
{
97-
return _maxNumberOfItems != 1;
104+
return maxNumberOfItems != 1;
98105
}
99106
}
107+
108+
maxNumberOfItems = 0;
100109
return true;
101110
}
102111
}

0 commit comments

Comments
 (0)