@@ -10,15 +10,31 @@ namespace Nest.JsonNetSerializer
10
10
{
11
11
public abstract partial class ConnectionSettingsAwareSerializerBase
12
12
{
13
+ protected Func < JsonSerializerSettings > JsonSerializerSettingsFactory { get ; }
14
+ protected Action < ConnectionSettingsAwareContractResolver > ModifyContractResolverCallback { get ; }
15
+ protected IEnumerable < JsonConverter > ContractJsonConverters { get ; }
16
+
13
17
protected IConnectionSettingsValues ConnectionSettings { get ; }
18
+
14
19
protected IElasticsearchSerializer BuiltinSerializer { get ; }
15
20
16
21
private List < JsonConverter > Converters { get ; }
17
22
18
- protected ConnectionSettingsAwareSerializerBase (
23
+ protected ConnectionSettingsAwareSerializerBase ( IElasticsearchSerializer builtinSerializer , IConnectionSettingsValues connectionSettings )
24
+ : this ( builtinSerializer , connectionSettings , null , null , null ) { }
25
+
26
+ internal ConnectionSettingsAwareSerializerBase (
19
27
IElasticsearchSerializer builtinSerializer ,
20
- IConnectionSettingsValues connectionSettings )
28
+ IConnectionSettingsValues connectionSettings ,
29
+ Func < JsonSerializerSettings > jsonSerializerSettingsFactory ,
30
+ Action < ConnectionSettingsAwareContractResolver > modifyContractResolver ,
31
+ IEnumerable < JsonConverter > contractJsonConverters )
21
32
{
33
+
34
+ JsonSerializerSettingsFactory = jsonSerializerSettingsFactory ;
35
+ ModifyContractResolverCallback = modifyContractResolver ;
36
+ ContractJsonConverters = contractJsonConverters ?? Enumerable . Empty < JsonConverter > ( ) ;
37
+
22
38
ConnectionSettings = connectionSettings ;
23
39
BuiltinSerializer = builtinSerializer ;
24
40
this . Converters = new List < JsonConverter >
@@ -28,62 +44,32 @@ protected ConnectionSettingsAwareSerializerBase(
28
44
} ;
29
45
_serializer = CreateSerializer ( SerializationFormatting . Indented ) ;
30
46
_collapsedSerializer = CreateSerializer ( SerializationFormatting . None ) ;
31
-
32
47
}
33
48
49
+
34
50
private JsonSerializer CreateSerializer ( SerializationFormatting formatting )
35
51
{
36
- var s = CreateJsonSerializerSettings ( ) ;
52
+ var s = CreateJsonSerializerSettings ( ) ?? new JsonSerializerSettings ( ) ; ;
37
53
var converters = CreateJsonConverters ( ) ?? Enumerable . Empty < JsonConverter > ( ) ;
38
54
var contract = CreateContractResolver ( ) ;
39
55
s . Formatting = formatting == SerializationFormatting . Indented ? Formatting . Indented : Formatting . None ;
40
56
s . ContractResolver = contract ;
41
57
s . Converters = converters . Concat ( this . Converters ) . ToList ( ) ;
42
58
return JsonSerializer . Create ( s ) ;
43
59
}
60
+
44
61
private IContractResolver CreateContractResolver ( )
45
62
{
46
63
var contract = new ConnectionSettingsAwareContractResolver ( this . ConnectionSettings ) ;
47
64
ModifyContractResolver ( contract ) ;
48
65
return contract ;
49
66
}
50
67
51
- protected abstract JsonSerializerSettings CreateJsonSerializerSettings ( ) ;
52
-
53
- //TODO
54
- protected abstract IEnumerable < JsonConverter > CreateJsonConverters ( ) ;
55
-
56
- protected virtual void ModifyContractResolver ( ConnectionSettingsAwareContractResolver resolver ) { }
57
- }
58
-
59
- public class JsonNetSerializer : ConnectionSettingsAwareSerializerBase
60
- {
61
- private readonly Func < JsonSerializerSettings > _jsonSerializerSettingsFactory ;
62
- private readonly Action < ConnectionSettingsAwareContractResolver > _modifyContractResolver ;
63
- private readonly IEnumerable < JsonConverter > _contractJsonConverters ;
64
-
65
- public static IElasticsearchSerializer Default ( IElasticsearchSerializer builtin , IConnectionSettingsValues values )
66
- => new JsonNetSerializer ( builtin , values ) ;
67
-
68
- public JsonNetSerializer (
69
- IElasticsearchSerializer builtinSerializer ,
70
- IConnectionSettingsValues connectionSettings ,
71
- Func < JsonSerializerSettings > jsonSerializerSettingsFactory = null ,
72
- Action < ConnectionSettingsAwareContractResolver > modifyContractResolver = null ,
73
- IEnumerable < JsonConverter > contractJsonConverters = null )
74
- : base ( builtinSerializer , connectionSettings )
75
- {
76
- _jsonSerializerSettingsFactory = jsonSerializerSettingsFactory ;
77
- _modifyContractResolver = modifyContractResolver ;
78
- _contractJsonConverters = contractJsonConverters ?? Enumerable . Empty < JsonConverter > ( ) ;
79
- }
80
-
81
- protected override JsonSerializerSettings CreateJsonSerializerSettings ( ) => _jsonSerializerSettingsFactory ? . Invoke ( ) ;
82
-
83
- protected override IEnumerable < JsonConverter > CreateJsonConverters ( ) => _contractJsonConverters ;
68
+ protected virtual JsonSerializerSettings CreateJsonSerializerSettings ( ) => JsonSerializerSettingsFactory ? . Invoke ( ) ;
84
69
85
- protected override void ModifyContractResolver ( ConnectionSettingsAwareContractResolver resolver ) =>
86
- _modifyContractResolver ? . Invoke ( resolver ) ;
70
+ protected virtual IEnumerable < JsonConverter > CreateJsonConverters ( ) => ContractJsonConverters ;
87
71
72
+ protected virtual void ModifyContractResolver ( ConnectionSettingsAwareContractResolver resolver ) =>
73
+ ModifyContractResolverCallback ? . Invoke ( resolver ) ;
88
74
}
89
75
}
0 commit comments