Introducing NotNullAttribute for null argument checks

This commit is contained in:
Pranav K 2014-03-05 12:09:34 -08:00
parent eb61728107
commit 28b7597779
14 changed files with 46 additions and 46 deletions

View File

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013 # Visual Studio 2013
VisualStudioVersion = 12.0.21005.1 VisualStudioVersion = 12.0.30110.0
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}"
EndProject EndProject
@ -51,6 +51,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.k10",
EndProject 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}" 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 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU 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}.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.ActiveCfg = Release|Any CPU
{64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Release|Any CPU.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -134,18 +146,20 @@ Global
{CE037E26-9EB5-48E2-B73B-06C6FF6CC9F5} = {DAAE4C74-D06F-4874-A166-33305D2643CE} {CE037E26-9EB5-48E2-B73B-06C6FF6CC9F5} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{6C2EDE5B-CA31-42DD-A352-84B10CC70C98} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} {6C2EDE5B-CA31-42DD-A352-84B10CC70C98} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3} = {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} {A25566C9-97C7-4770-BBC1-9B815D3B1380} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98}
{28AA31B2-6504-432D-8599-1501FE0B100A} = {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} {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} {792E181C-7645-4268-A04F-DB134411AD74} = {6C2EDE5B-CA31-42DD-A352-84B10CC70C98}
{64BD92BA-F313-496C-ACE6-B9C4C10C420E} = {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} {613579ED-7B96-4F5C-8DBF-D2C580257BE2} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3}
{24947215-86AB-4DD0-B94E-88B1EC4DC877} = {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} {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} {5E701B23-73E4-45D2-8521-1D7A94E152F1} = {4EB70D0E-E27E-4C42-AB58-BC8B325EDFB3}
{BA88E212-5889-48DC-823F-A3A67DDEF123} = {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} {501817DD-8143-4A50-888D-99896A82CD12} = {222CA408-93EE-473A-9325-D04989EC9FEF}
{688ABC8B-BFA9-4CFF-9458-A466FEBB0448} = {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} {A7D7CD66-A407-4144-8AB7-07F895F87137} = {CE037E26-9EB5-48E2-B73B-06C6FF6CC9F5}

View File

@ -0,0 +1,9 @@
using System;
namespace Microsoft.AspNet.Mvc
{
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)]
internal sealed class NotNullAttribute : Attribute
{
}
}

3
src/Common/project.json Normal file
View File

@ -0,0 +1,3 @@
{
"shared": "*.cs"
}

View File

@ -1,16 +1,10 @@
using System; 
namespace Microsoft.AspNet.Mvc namespace Microsoft.AspNet.Mvc
{ {
public class ActionInvokerProviderContext public class ActionInvokerProviderContext
{ {
public ActionInvokerProviderContext(ActionContext actionContext) public ActionInvokerProviderContext([NotNull]ActionContext actionContext)
{ {
if (actionContext == null)
{
throw new ArgumentNullException("actionContext");
}
ActionContext = actionContext; ActionContext = actionContext;
} }

View File

@ -5,6 +5,7 @@
"Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*", "Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*",
"Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
"Microsoft.AspNet.Routing": "0.1-alpha-*", "Microsoft.AspNet.Routing": "0.1-alpha-*",
"Common": "",
"Microsoft.AspNet.Mvc.ModelBinding": "", "Microsoft.AspNet.Mvc.ModelBinding": "",
"Microsoft.AspNet.Mvc.Rendering": "" "Microsoft.AspNet.Mvc.Rendering": ""
}, },

View File

@ -1,23 +1,17 @@
using System; using System;
using Microsoft.AspNet.Mvc.ModelBinding.Internal;
namespace Microsoft.AspNet.Mvc.ModelBinding namespace Microsoft.AspNet.Mvc.ModelBinding
{ {
public class ModelError public class ModelError
{ {
public ModelError(Exception exception) public ModelError([NotNull]Exception exception)
: this(exception, errorMessage: null) : this(exception, errorMessage: null)
{ {
} }
public ModelError(Exception exception, string errorMessage) public ModelError([NotNull]Exception exception, string errorMessage)
: this(errorMessage) : this(errorMessage)
{ {
if (exception == null)
{
throw Error.ArgumentNull("exception");
}
Exception = exception; Exception = exception;
} }

View File

@ -5,12 +5,12 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
{ {
public class ModelErrorCollection : Collection<ModelError> public class ModelErrorCollection : Collection<ModelError>
{ {
public void Add(Exception exception) public void Add([NotNull]Exception exception)
{ {
Add(new ModelError(exception)); Add(new ModelError(exception));
} }
public void Add(string errorMessage) public void Add([NotNull]string errorMessage)
{ {
Add(new ModelError(errorMessage)); Add(new ModelError(errorMessage));
} }

View File

@ -1,7 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Microsoft.AspNet.Mvc.ModelBinding.Internal;
namespace Microsoft.AspNet.Mvc.ModelBinding 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) foreach (var entry in dictionary)
{ {
_innerDictionary.Add(entry.Key, entry.Value); _innerDictionary.Add(entry.Key, entry.Value);
@ -41,13 +35,8 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
GetModelStateForKey(key).Errors.Add(errorMessage); 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; ModelState modelState;
if (!TryGetValue(key, out modelState)) if (!TryGetValue(key, out modelState))
{ {

View File

@ -6,18 +6,9 @@ namespace Microsoft.AspNet.Mvc
{ {
public class RequestContext public class RequestContext
{ {
public RequestContext(HttpContext context, IDictionary<string, object> routeValues) public RequestContext([NotNull]HttpContext context,
[NotNull]IDictionary<string, object> routeValues)
{ {
if (context == null)
{
throw new ArgumentNullException("context");
}
if (routeValues == null)
{
throw new ArgumentNullException("routeValues");
}
HttpContext = context; HttpContext = context;
RouteValues = routeValues; RouteValues = routeValues;
} }

View File

@ -1,6 +1,7 @@
{ {
"version" : "0.1-alpha-*", "version" : "0.1-alpha-*",
"dependencies": { "dependencies": {
"Common": "",
"Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*", "Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*",
"Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
"Newtonsoft.Json": "5.0.8" "Newtonsoft.Json": "5.0.8"

View File

@ -1,7 +1,8 @@
{ {
"version" : "0.1-alpha-*", "version" : "0.1-alpha-*",
"dependencies": { "dependencies": {
"Microsoft.AspNet.Razor": "0.1-alpha-*" "Microsoft.AspNet.Razor": "0.1-alpha-*",
"Common": ""
}, },
"configurations": { "configurations": {
"net45": {}, "net45": {},

View File

@ -5,6 +5,7 @@
"Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-*", "Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
"Microsoft.AspNet.Razor": "0.1-alpha-*", "Microsoft.AspNet.Razor": "0.1-alpha-*",
"Common": "",
"Microsoft.AspNet.Mvc.Core" : "", "Microsoft.AspNet.Mvc.Core" : "",
"Microsoft.AspNet.Mvc.ModelBinding" : "", "Microsoft.AspNet.Mvc.ModelBinding" : "",
"Microsoft.AspNet.Mvc.Rendering" : "", "Microsoft.AspNet.Mvc.Rendering" : "",

View File

@ -3,6 +3,7 @@
"dependencies": { "dependencies": {
"Microsoft.AspNet.Abstractions": "0.1-alpha-*", "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-*", "Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
"Common": "",
"Microsoft.AspNet.Mvc.ModelBinding": "" "Microsoft.AspNet.Mvc.ModelBinding": ""
}, },
"configurations": { "configurations": {

View File

@ -7,6 +7,7 @@
"Microsoft.AspNet.FileSystems" : "0.1-alpha-*", "Microsoft.AspNet.FileSystems" : "0.1-alpha-*",
"Microsoft.AspNet.Razor" : "0.1-alpha-*", "Microsoft.AspNet.Razor" : "0.1-alpha-*",
"Microsoft.AspNet.Routing" : "0.1-alpha-*", "Microsoft.AspNet.Routing" : "0.1-alpha-*",
"Common": "",
"Microsoft.AspNet.Mvc.Core": "", "Microsoft.AspNet.Mvc.Core": "",
"Microsoft.AspNet.Mvc.Razor": "", "Microsoft.AspNet.Mvc.Razor": "",
"Microsoft.AspNet.Mvc.ModelBinding" : "", "Microsoft.AspNet.Mvc.ModelBinding" : "",