Skip to content

Commit cd818a4

Browse files
committed
Fixed an issue where the serializer wasn't always being passed through to the get known data helper methods.
1 parent 6d33a8a commit cd818a4

File tree

10 files changed

+86
-23
lines changed

10 files changed

+86
-23
lines changed

Source/Extras/Plugins/15_PrivateInformationPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Exceptionless.Dependency;
23

34
namespace Exceptionless.Plugins {
45
[Priority(15)]
@@ -7,7 +8,7 @@ public void Run(EventPluginContext context) {
78
if (!context.Client.Configuration.IncludePrivateInformation)
89
return;
910

10-
var user = context.Event.GetUserIdentity();
11+
var user = context.Event.GetUserIdentity(context.Client.Configuration.Resolver.GetJsonSerializer());
1112
if (user == null)
1213
context.Event.SetUserIdentity(Environment.UserName);
1314
}

Source/Platforms/WebApi/ExceptionlessWebApiPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Security.Principal;
77
using System.Threading;
88
using System.Web.Http.Controllers;
9+
using Exceptionless.Dependency;
910
using Exceptionless.Plugins;
1011
using Exceptionless.Extensions;
1112
using Exceptionless.Logging;
@@ -37,7 +38,7 @@ public void Run(EventPluginContext context) {
3738
if (requestInfo == null)
3839
return;
3940

40-
var error = context.Event.GetError();
41+
var error = context.Event.GetError(context.Client.Configuration.Resolver.GetJsonSerializer());
4142
if (error != null && error.Code == "404") {
4243
context.Event.Type = Event.KnownTypes.NotFound;
4344
context.Event.Source = requestInfo.GetFullPath(includeHttpMethod: true, includeHost: false, includeQueryString: false);

Source/Platforms/Windows/Dialogs/CrashReportForm.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public CrashReportForm(ExceptionlessClient client, Event ev) {
1919
Text = String.Concat(AssemblyHelper.GetAssemblyTitle(), " Error");
2020
InformationHeaderLabel.Text = String.Concat(AssemblyHelper.GetAssemblyTitle(), " has encountered a problem and needs to close. We are sorry for the inconvenience.");
2121

22-
var userInfo = ev.GetUserIdentity();
22+
var userInfo = ev.GetUserIdentity(client.Configuration.Resolver.GetJsonSerializer());
2323
if (userInfo != null && !String.IsNullOrEmpty(userInfo.Identity)) {
2424
EmailAddressTextBox.Text = userInfo.Identity;
2525
} else {
@@ -29,7 +29,7 @@ public CrashReportForm(ExceptionlessClient client, Event ev) {
2929
EmailAddressTextBox.Text = emailAddress;
3030
}
3131

32-
var userDescription = Event.GetUserDescription();
32+
var userDescription = Event.GetUserDescription(client.Configuration.Resolver.GetJsonSerializer());
3333
if (userDescription != null)
3434
DescriptionTextBox.Text = userDescription.Description;
3535
}

Source/Platforms/Wpf/Dialogs/CrashReportDialog.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public CrashReportDialog(ExceptionlessClient client, Event ev) {
2222
Title = String.Concat(AssemblyHelper.GetAssemblyTitle(), " Error");
2323
InformationHeaderLabel.Text = String.Concat(AssemblyHelper.GetAssemblyTitle(), " has encountered a problem and needs to close. We are sorry for the inconvenience.");
2424

25-
var userInfo = ev.GetUserIdentity();
25+
var userInfo = ev.GetUserIdentity(client.Configuration.Resolver.GetJsonSerializer());
2626
if (userInfo != null && !String.IsNullOrEmpty(userInfo.Identity)) {
2727
EmailAddressTextBox.Text = userInfo.Identity;
2828
} else {
@@ -32,7 +32,7 @@ public CrashReportDialog(ExceptionlessClient client, Event ev) {
3232
EmailAddressTextBox.Text = emailAddress;
3333
}
3434

35-
var userDescription = Event.GetUserDescription();
35+
var userDescription = Event.GetUserDescription(client.Configuration.Resolver.GetJsonSerializer());
3636
if (userDescription != null)
3737
DescriptionTextBox.Text = userDescription.Description;
3838
}

Source/Shared/Extensions/EventExtensions.cs

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -124,15 +124,7 @@ public static void AddRequestInfo(this Event ev, RequestInfo request) {
124124

125125
ev.Data[Event.KnownDataKeys.RequestInfo] = request;
126126
}
127-
128-
/// <summary>
129-
/// Gets the user info object from extended data.
130-
/// </summary>
131-
public static UserInfo GetUserIdentity(this Event ev) {
132-
object value;
133-
return ev.Data.TryGetValue(Event.KnownDataKeys.UserInfo, out value) ? value as UserInfo : null;
134-
}
135-
127+
136128
/// <summary>
137129
/// Sets the version that the event happened on.
138130
/// </summary>
@@ -144,7 +136,21 @@ public static void SetVersion(this Event ev, string version) {
144136

145137
ev.Data[Event.KnownDataKeys.Version] = version.Trim();
146138
}
139+
140+
/// <summary>
141+
/// Gets the user info object from extended data.
142+
/// </summary>
143+
public static UserInfo GetUserIdentity(this Event ev, IJsonSerializer serializer = null) {
144+
if (ev == null || !ev.Data.ContainsKey(Event.KnownDataKeys.UserInfo))
145+
return null;
147146

147+
try {
148+
return ev.Data.GetValue<UserInfo>(Event.KnownDataKeys.UserInfo, serializer);
149+
} catch (Exception) { }
150+
151+
return null;
152+
}
153+
148154
/// <summary>
149155
/// Sets the user's identity (ie. email address, username, user id) that the event happened to.
150156
/// </summary>
@@ -182,9 +188,15 @@ public static void SetUserIdentity(this Event ev, UserInfo userInfo) {
182188
/// <summary>
183189
/// Gets the user description from extended data.
184190
/// </summary>
185-
public static UserDescription GetUserDescription(this Event ev) {
186-
object value;
187-
return ev.Data.TryGetValue(Event.KnownDataKeys.UserDescription, out value) ? value as UserDescription : null;
191+
public static UserDescription GetUserDescription(this Event ev, IJsonSerializer serializer = null) {
192+
if (ev == null || !ev.Data.ContainsKey(Event.KnownDataKeys.UserDescription))
193+
return null;
194+
195+
try {
196+
return ev.Data.GetValue<UserDescription>(Event.KnownDataKeys.UserDescription, serializer);
197+
} catch (Exception) { }
198+
199+
return null;
188200
}
189201

190202
/// <summary>

Source/Shared/Plugins/Default/030_DuplicateCheckerPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Concurrent;
33
using System.Linq;
4+
using Exceptionless.Dependency;
45
using Exceptionless.Logging;
56
using Exceptionless.Models.Data;
67

@@ -13,7 +14,7 @@ public void Run(EventPluginContext context) {
1314
if (!context.Event.IsError())
1415
return;
1516

16-
InnerError current = context.Event.GetError();
17+
InnerError current = context.Event.GetError(context.Client.Configuration.Resolver.GetJsonSerializer());
1718
DateTime repeatWindow = DateTime.Now.AddSeconds(-2);
1819

1920
while (current != null) {

Source/Shared/Plugins/Default/1000_CancelSessionsWithNoUserPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Exceptionless.Dependency;
23

34
namespace Exceptionless.Plugins.Default {
45
[Priority(1000)]
@@ -7,7 +8,7 @@ public void Run(EventPluginContext context) {
78
if (!context.Event.IsSessionStart() && !context.Event.IsSessionEnd() && !context.Event.IsSessionHeartbeat())
89
return;
910

10-
var user = context.Event.GetUserIdentity();
11+
var user = context.Event.GetUserIdentity(context.Client.Configuration.Resolver.GetJsonSerializer());
1112
if (user != null && !String.IsNullOrEmpty(user.Identity))
1213
return;
1314

Source/Shared/Plugins/Default/100_HeartbeatPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Threading;
3+
using Exceptionless.Dependency;
34
using Exceptionless.Models.Data;
45

56
namespace Exceptionless.Plugins.Default {
@@ -20,7 +21,7 @@ public void Run(EventPluginContext context) {
2021
return;
2122
}
2223

23-
var user = context.Event.GetUserIdentity();
24+
var user = context.Event.GetUserIdentity(context.Client.Configuration.Resolver.GetJsonSerializer());
2425
if (user == null || String.IsNullOrEmpty(user.Identity))
2526
return;
2627

Source/Shared/Plugins/Default/110_IgnoreUserAgentPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
using System;
2+
using Exceptionless.Dependency;
23
using Exceptionless.Extensions;
34

45
namespace Exceptionless.Plugins {
56
[Priority(110)]
67
public class IgnoreUserAgentPlugin : IEventPlugin {
78
public void Run(EventPluginContext context) {
8-
var request = context.Event.GetRequestInfo();
9+
var request = context.Event.GetRequestInfo(context.Client.Configuration.Resolver.GetJsonSerializer());
910
if (request == null)
1011
return;
1112

Source/Tests/Plugins/PluginTests.cs

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,52 @@ public void ConfigurationDefaults_IgnoredProperties() {
5959
Assert.Equal(1, context.Event.Data.Count);
6060
Assert.Equal("Test", context.Event.Data["Message"]);
6161
}
62-
62+
63+
[Fact]
64+
public void ConfigurationDefaults_SerializedProperties() {
65+
var client = new ExceptionlessClient();
66+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.EnvironmentInfo, new EnvironmentInfo { MachineName = "blake" });
67+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.Error, new Error { Message = "blake" });
68+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.Level, "Debug");
69+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.ManualStackingKey, "blake");
70+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.RequestInfo, new RequestInfo { Host = "blake" });
71+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.SimpleError, new SimpleError { Message = "blake" });
72+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.SubmissionMethod, "test");
73+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.TraceLog, new List<string>());
74+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.UserDescription, new UserDescription("[email protected]", "blake"));
75+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.UserInfo, new UserInfo("blake"));
76+
client.Configuration.DefaultData.Add(Event.KnownDataKeys.Version, "1.0");
77+
78+
var serializer = client.Configuration.Resolver.GetJsonSerializer();
79+
var context = new EventPluginContext(client, new Event());
80+
var plugin = new ConfigurationDefaultsPlugin();
81+
plugin.Run(context);
82+
Assert.Equal(11, context.Event.Data.Count);
83+
Assert.True(context.Event.Data[Event.KnownDataKeys.EnvironmentInfo] is string);
84+
Assert.Equal("blake", context.Event.GetEnvironmentInfo().MachineName);
85+
Assert.Equal("blake", context.Event.GetEnvironmentInfo(serializer).MachineName);
86+
Assert.True(context.Event.Data[Event.KnownDataKeys.Error] is string);
87+
Assert.Equal("blake", context.Event.GetError().Message);
88+
Assert.Equal("blake", context.Event.GetError(serializer).Message);
89+
Assert.Equal("Debug", context.Event.Data[Event.KnownDataKeys.Level]);
90+
Assert.Equal("blake", context.Event.Data[Event.KnownDataKeys.ManualStackingKey]);
91+
Assert.True(context.Event.Data[Event.KnownDataKeys.RequestInfo] is string);
92+
Assert.Equal("blake", context.Event.GetRequestInfo().Host);
93+
Assert.Equal("blake", context.Event.GetRequestInfo(serializer).Host);
94+
Assert.True(context.Event.Data[Event.KnownDataKeys.SimpleError] is string);
95+
Assert.Equal("blake", context.Event.GetSimpleError().Message);
96+
Assert.Equal("blake", context.Event.GetSimpleError(serializer).Message);
97+
Assert.Equal("test", context.Event.Data[Event.KnownDataKeys.SubmissionMethod]);
98+
Assert.True(context.Event.Data[Event.KnownDataKeys.TraceLog] is string);
99+
Assert.True(context.Event.Data[Event.KnownDataKeys.UserDescription] is string);
100+
Assert.Equal("blake", context.Event.GetUserDescription().Description);
101+
Assert.Equal("blake", context.Event.GetUserDescription(serializer).Description);
102+
Assert.True(context.Event.Data[Event.KnownDataKeys.UserInfo] is string);
103+
Assert.Equal("blake", context.Event.GetUserIdentity().Identity);
104+
Assert.Equal("blake", context.Event.GetUserIdentity(serializer).Identity);
105+
Assert.Equal("1.0", context.Event.Data[Event.KnownDataKeys.Version]);
106+
}
107+
63108
[Fact]
64109
public void IgnoreUserAgentPlugin_DiscardBot() {
65110
var client = new ExceptionlessClient();

0 commit comments

Comments
 (0)