From 28b7597779ea6a35c51d861edf604050d860ec13 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Wed, 5 Mar 2014 12:09:34 -0800 Subject: [PATCH] Introducing NotNullAttribute for null argument checks --- WebFx.sln | 20 ++++++++++++++++--- src/Common/NotNullArgument.cs | 9 +++++++++ src/Common/project.json | 3 +++ .../ActionInvokerProviderContext.cs | 10 ++-------- src/Microsoft.AspNet.Mvc.Core/project.json | 1 + .../ModelError.cs | 10 ++-------- .../ModelErrorCollection.cs | 4 ++-- .../ModelStateDictionary.cs | 15 ++------------ .../RequestContext.cs | 13 ++---------- .../project.json | 1 + .../project.json | 3 ++- src/Microsoft.AspNet.Mvc.Razor/project.json | 1 + .../project.json | 1 + src/Microsoft.AspNet.Mvc/project.json | 1 + 14 files changed, 46 insertions(+), 46 deletions(-) create mode 100644 src/Common/NotNullArgument.cs create mode 100644 src/Common/project.json diff --git a/WebFx.sln b/WebFx.sln index 86812a1ff8..43f9f28cfc 100644 --- a/WebFx.sln +++ b/WebFx.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 +VisualStudioVersion = 12.0.30110.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}" EndProject @@ -51,6 +51,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.k10", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.net45", "src\Microsoft.AspNet.Mvc\Microsoft.AspNet.Mvc.net45.csproj", "{64BD92BA-F313-496C-ACE6-B9C4C10C420E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.net45", "src\Common\Common.net45.csproj", "{10142178-F784-4E17-A583-E9A37A80EFAA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.k10", "src\Common\Common.k10.csproj", "{D4576205-A5B5-4382-BB34-19DE9855FE94}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -125,6 +129,14 @@ Global {64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Debug|Any CPU.Build.0 = Debug|Any CPU {64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Release|Any CPU.ActiveCfg = Release|Any CPU {64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Release|Any CPU.Build.0 = Release|Any CPU + {10142178-F784-4E17-A583-E9A37A80EFAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10142178-F784-4E17-A583-E9A37A80EFAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10142178-F784-4E17-A583-E9A37A80EFAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10142178-F784-4E17-A583-E9A37A80EFAA}.Release|Any CPU.Build.0 = Release|Any CPU + {D4576205-A5B5-4382-BB34-19DE9855FE94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D4576205-A5B5-4382-BB34-19DE9855FE94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D4576205-A5B5-4382-BB34-19DE9855FE94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D4576205-A5B5-4382-BB34-19DE9855FE94}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -134,18 +146,20 @@ Global {CE037E26-9EB5-48E2-B73B-06C6FF6CC9F5} = {DAAE4C74-D06F-4874-A166-33305D2643CE} {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} - {365CA5C6-037D-4E6E-AF05-F5FA42E024EB} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} {A25566C9-97C7-4770-BBC1-9B815D3B1380} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} {28AA31B2-6504-432D-8599-1501FE0B100A} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} {236CDB04-8FDA-4152-9A5B-7F98C19C663A} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} {792E181C-7645-4268-A04F-DB134411AD74} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} {64BD92BA-F313-496C-ACE6-B9C4C10C420E} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} - {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} + {10142178-F784-4E17-A583-E9A37A80EFAA} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} {613579ED-7B96-4F5C-8DBF-D2C580257BE2} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} {24947215-86AB-4DD0-B94E-88B1EC4DC877} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} {DA65D56F-1C40-4D38-B1E0-BF9641A98C52} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} {5E701B23-73E4-45D2-8521-1D7A94E152F1} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} {BA88E212-5889-48DC-823F-A3A67DDEF123} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} + {D4576205-A5B5-4382-BB34-19DE9855FE94} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} {501817DD-8143-4A50-888D-99896A82CD12} = {222CA408-93EE-473A-9325-D04989EC9FEF} {688ABC8B-BFA9-4CFF-9458-A466FEBB0448} = {222CA408-93EE-473A-9325-D04989EC9FEF} {A7D7CD66-A407-4144-8AB7-07F895F87137} = {CE037E26-9EB5-48E2-B73B-06C6FF6CC9F5} diff --git a/src/Common/NotNullArgument.cs b/src/Common/NotNullArgument.cs new file mode 100644 index 0000000000..0a112ac7c7 --- /dev/null +++ b/src/Common/NotNullArgument.cs @@ -0,0 +1,9 @@ +using System; + +namespace Microsoft.AspNet.Mvc +{ + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] + internal sealed class NotNullAttribute : Attribute + { + } +} \ No newline at end of file diff --git a/src/Common/project.json b/src/Common/project.json new file mode 100644 index 0000000000..2a36c3d6c3 --- /dev/null +++ b/src/Common/project.json @@ -0,0 +1,3 @@ +{ + "shared": "*.cs" +} \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionInvokerProviderContext.cs b/src/Microsoft.AspNet.Mvc.Core/ActionInvokerProviderContext.cs index 5b992680c4..60c2928fac 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionInvokerProviderContext.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionInvokerProviderContext.cs @@ -1,16 +1,10 @@ -using System; - + namespace Microsoft.AspNet.Mvc { public class ActionInvokerProviderContext { - public ActionInvokerProviderContext(ActionContext actionContext) + public ActionInvokerProviderContext([NotNull]ActionContext actionContext) { - if (actionContext == null) - { - throw new ArgumentNullException("actionContext"); - } - ActionContext = actionContext; } diff --git a/src/Microsoft.AspNet.Mvc.Core/project.json b/src/Microsoft.AspNet.Mvc.Core/project.json index 7d8514cbc1..6f1aa99cb5 100644 --- a/src/Microsoft.AspNet.Mvc.Core/project.json +++ b/src/Microsoft.AspNet.Mvc.Core/project.json @@ -5,6 +5,7 @@ "Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*", "Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Microsoft.AspNet.Routing": "0.1-alpha-*", + "Common": "", "Microsoft.AspNet.Mvc.ModelBinding": "", "Microsoft.AspNet.Mvc.Rendering": "" }, diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/ModelError.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/ModelError.cs index b0207491da..72bf2a8cba 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/ModelError.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/ModelError.cs @@ -1,23 +1,17 @@ using System; -using Microsoft.AspNet.Mvc.ModelBinding.Internal; namespace Microsoft.AspNet.Mvc.ModelBinding { public class ModelError { - public ModelError(Exception exception) + public ModelError([NotNull]Exception exception) : this(exception, errorMessage: null) { } - public ModelError(Exception exception, string errorMessage) + public ModelError([NotNull]Exception exception, string errorMessage) : this(errorMessage) { - if (exception == null) - { - throw Error.ArgumentNull("exception"); - } - Exception = exception; } diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/ModelErrorCollection.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/ModelErrorCollection.cs index 9394dd4a77..87a8e1accf 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/ModelErrorCollection.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/ModelErrorCollection.cs @@ -5,12 +5,12 @@ namespace Microsoft.AspNet.Mvc.ModelBinding { public class ModelErrorCollection : Collection { - public void Add(Exception exception) + public void Add([NotNull]Exception exception) { Add(new ModelError(exception)); } - public void Add(string errorMessage) + public void Add([NotNull]string errorMessage) { Add(new ModelError(errorMessage)); } diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/ModelStateDictionary.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/ModelStateDictionary.cs index e08fb0b27a..59b46b0287 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/ModelStateDictionary.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/ModelStateDictionary.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using Microsoft.AspNet.Mvc.ModelBinding.Internal; namespace Microsoft.AspNet.Mvc.ModelBinding { @@ -13,13 +12,8 @@ namespace Microsoft.AspNet.Mvc.ModelBinding { } - public ModelStateDictionary(ModelStateDictionary dictionary) + public ModelStateDictionary([NotNull]ModelStateDictionary dictionary) { - if (dictionary == null) - { - throw Error.ArgumentNull("dictionary"); - } - foreach (var entry in dictionary) { _innerDictionary.Add(entry.Key, entry.Value); @@ -41,13 +35,8 @@ namespace Microsoft.AspNet.Mvc.ModelBinding GetModelStateForKey(key).Errors.Add(errorMessage); } - private ModelState GetModelStateForKey(string key) + private ModelState GetModelStateForKey([NotNull]string key) { - if (key == null) - { - throw Error.ArgumentNull("key"); - } - ModelState modelState; if (!TryGetValue(key, out modelState)) { diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/RequestContext.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/RequestContext.cs index ba2f67711c..391803708b 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/RequestContext.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/RequestContext.cs @@ -6,18 +6,9 @@ namespace Microsoft.AspNet.Mvc { public class RequestContext { - public RequestContext(HttpContext context, IDictionary routeValues) + public RequestContext([NotNull]HttpContext context, + [NotNull]IDictionary routeValues) { - if (context == null) - { - throw new ArgumentNullException("context"); - } - - if (routeValues == null) - { - throw new ArgumentNullException("routeValues"); - } - HttpContext = context; RouteValues = routeValues; } diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/project.json b/src/Microsoft.AspNet.Mvc.ModelBinding/project.json index 960a9c7d5d..e86945a57e 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/project.json +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/project.json @@ -1,6 +1,7 @@ { "version" : "0.1-alpha-*", "dependencies": { + "Common": "", "Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*", "Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Newtonsoft.Json": "5.0.8" diff --git a/src/Microsoft.AspNet.Mvc.Razor.Host/project.json b/src/Microsoft.AspNet.Mvc.Razor.Host/project.json index 73add5adf0..129be4677b 100644 --- a/src/Microsoft.AspNet.Mvc.Razor.Host/project.json +++ b/src/Microsoft.AspNet.Mvc.Razor.Host/project.json @@ -1,7 +1,8 @@ { "version" : "0.1-alpha-*", "dependencies": { - "Microsoft.AspNet.Razor": "0.1-alpha-*" + "Microsoft.AspNet.Razor": "0.1-alpha-*", + "Common": "" }, "configurations": { "net45": {}, diff --git a/src/Microsoft.AspNet.Mvc.Razor/project.json b/src/Microsoft.AspNet.Mvc.Razor/project.json index 5a78a1527a..cecf833b2e 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/project.json +++ b/src/Microsoft.AspNet.Mvc.Razor/project.json @@ -5,6 +5,7 @@ "Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Microsoft.AspNet.DependencyInjection": "0.1-alpha-*", "Microsoft.AspNet.Razor": "0.1-alpha-*", + "Common": "", "Microsoft.AspNet.Mvc.Core" : "", "Microsoft.AspNet.Mvc.ModelBinding" : "", "Microsoft.AspNet.Mvc.Rendering" : "", diff --git a/src/Microsoft.AspNet.Mvc.Rendering/project.json b/src/Microsoft.AspNet.Mvc.Rendering/project.json index cf56795aed..beec5e9ad9 100644 --- a/src/Microsoft.AspNet.Mvc.Rendering/project.json +++ b/src/Microsoft.AspNet.Mvc.Rendering/project.json @@ -3,6 +3,7 @@ "dependencies": { "Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Microsoft.AspNet.DependencyInjection": "0.1-alpha-*", + "Common": "", "Microsoft.AspNet.Mvc.ModelBinding": "" }, "configurations": { diff --git a/src/Microsoft.AspNet.Mvc/project.json b/src/Microsoft.AspNet.Mvc/project.json index e9c27917c4..a9619f68e0 100644 --- a/src/Microsoft.AspNet.Mvc/project.json +++ b/src/Microsoft.AspNet.Mvc/project.json @@ -7,6 +7,7 @@ "Microsoft.AspNet.FileSystems" : "0.1-alpha-*", "Microsoft.AspNet.Razor" : "0.1-alpha-*", "Microsoft.AspNet.Routing" : "0.1-alpha-*", + "Common": "", "Microsoft.AspNet.Mvc.Core": "", "Microsoft.AspNet.Mvc.Razor": "", "Microsoft.AspNet.Mvc.ModelBinding" : "",