Replace NotNullAttribute with thrown exceptions
This commit is contained in:
parent
fa5f9399e8
commit
02c36a1c48
|
|
@ -9,9 +9,7 @@ using Microsoft.AspNet.Http;
|
|||
using Microsoft.AspNet.Mvc;
|
||||
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||
using Microsoft.AspNet.Mvc.ModelBinding.Validation;
|
||||
using Microsoft.AspNet.Mvc.Routing;
|
||||
using Microsoft.AspNet.Mvc.WebApiCompatShim;
|
||||
using Microsoft.Framework.Internal;
|
||||
using Microsoft.Net.Http.Headers;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
|
|
@ -128,8 +126,13 @@ namespace System.Web.Http
|
|||
/// <param name="message">The user-visible error message.</param>
|
||||
/// <returns>A <see cref="BadRequestErrorMessageResult"/> with the specified error message.</returns>
|
||||
[NonAction]
|
||||
public virtual BadRequestErrorMessageResult BadRequest([NotNull] string message)
|
||||
public virtual BadRequestErrorMessageResult BadRequest(string message)
|
||||
{
|
||||
if (message == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(message));
|
||||
}
|
||||
|
||||
return new BadRequestErrorMessageResult(message);
|
||||
}
|
||||
|
||||
|
|
@ -139,8 +142,13 @@ namespace System.Web.Http
|
|||
/// <param name="modelState">The model state to include in the error.</param>
|
||||
/// <returns>An <see cref="InvalidModelStateResult"/> with the specified model state.</returns>
|
||||
[NonAction]
|
||||
public virtual InvalidModelStateResult BadRequest([NotNull] ModelStateDictionary modelState)
|
||||
public virtual InvalidModelStateResult BadRequest(ModelStateDictionary modelState)
|
||||
{
|
||||
if (modelState == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelState));
|
||||
}
|
||||
|
||||
return new InvalidModelStateResult(modelState, includeErrorDetail: false);
|
||||
}
|
||||
|
||||
|
|
@ -160,8 +168,13 @@ namespace System.Web.Http
|
|||
/// <param name="value">The content value to negotiate and format in the entity body.</param>
|
||||
/// <returns>A <see cref="NegotiatedContentResult{T}"/> with the specified values.</returns>
|
||||
[NonAction]
|
||||
public virtual NegotiatedContentResult<T> Content<T>(HttpStatusCode statusCode, [NotNull] T value)
|
||||
public virtual NegotiatedContentResult<T> Content<T>(HttpStatusCode statusCode, T value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
return new NegotiatedContentResult<T>(statusCode, value);
|
||||
}
|
||||
|
||||
|
|
@ -174,8 +187,13 @@ namespace System.Web.Http
|
|||
/// <param name="content">The content value to format in the entity body.</param>
|
||||
/// <returns>A <see cref="CreatedResult"/> with the specified values.</returns>
|
||||
[NonAction]
|
||||
public virtual CreatedResult Created([NotNull] string location, object content)
|
||||
public virtual CreatedResult Created(string location, object content)
|
||||
{
|
||||
if (location == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(location));
|
||||
}
|
||||
|
||||
return new CreatedResult(location, content);
|
||||
}
|
||||
|
||||
|
|
@ -186,8 +204,13 @@ namespace System.Web.Http
|
|||
/// <param name="content">The content value to format in the entity body.</param>
|
||||
/// <returns>A <see cref="CreatedResult"/> with the specified values.</returns>
|
||||
[NonAction]
|
||||
public virtual CreatedResult Created([NotNull] Uri uri, object content)
|
||||
public virtual CreatedResult Created(Uri uri, object content)
|
||||
{
|
||||
if (uri == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(uri));
|
||||
}
|
||||
|
||||
string location;
|
||||
if (uri.IsAbsoluteUri)
|
||||
{
|
||||
|
|
@ -209,10 +232,15 @@ namespace System.Web.Http
|
|||
/// <returns>A <see cref="CreatedAtRouteResult"/> with the specified values.</returns>
|
||||
[NonAction]
|
||||
public virtual CreatedAtRouteResult CreatedAtRoute(
|
||||
[NotNull] string routeName,
|
||||
string routeName,
|
||||
object routeValues,
|
||||
object content)
|
||||
{
|
||||
if (routeName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(routeName));
|
||||
}
|
||||
|
||||
return new CreatedAtRouteResult(routeName, routeValues, content);
|
||||
}
|
||||
|
||||
|
|
@ -232,8 +260,13 @@ namespace System.Web.Http
|
|||
/// <param name="exception">The exception to include in the error.</param>
|
||||
/// <returns>An <see cref="ExceptionResult"/> with the specified exception.</returns>
|
||||
[NonAction]
|
||||
public virtual ExceptionResult InternalServerError([NotNull] Exception exception)
|
||||
public virtual ExceptionResult InternalServerError(Exception exception)
|
||||
{
|
||||
if (exception == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(exception));
|
||||
}
|
||||
|
||||
return new ExceptionResult(exception, includeErrorDetail: false);
|
||||
}
|
||||
|
||||
|
|
@ -244,8 +277,13 @@ namespace System.Web.Http
|
|||
/// <param name="content">The content value to serialize in the entity body.</param>
|
||||
/// <returns>A <see cref="JsonResult"/> with the specified value.</returns>
|
||||
[NonAction]
|
||||
public virtual JsonResult Json<T>([NotNull] T content)
|
||||
public virtual JsonResult Json<T>(T content)
|
||||
{
|
||||
if (content == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(content));
|
||||
}
|
||||
|
||||
return new JsonResult(content);
|
||||
}
|
||||
|
||||
|
|
@ -257,8 +295,18 @@ namespace System.Web.Http
|
|||
/// <param name="serializerSettings">The serializer settings.</param>
|
||||
/// <returns>A <see cref="JsonResult"/> with the specified values.</returns>
|
||||
[NonAction]
|
||||
public virtual JsonResult Json<T>([NotNull] T content, [NotNull] JsonSerializerSettings serializerSettings)
|
||||
public virtual JsonResult Json<T>(T content, JsonSerializerSettings serializerSettings)
|
||||
{
|
||||
if (content == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(content));
|
||||
}
|
||||
|
||||
if (serializerSettings == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(serializerSettings));
|
||||
}
|
||||
|
||||
return new JsonResult(content, serializerSettings);
|
||||
}
|
||||
|
||||
|
|
@ -272,10 +320,25 @@ namespace System.Web.Http
|
|||
/// <returns>A <see cref="JsonResult"/> with the specified values.</returns>
|
||||
[NonAction]
|
||||
public virtual JsonResult Json<T>(
|
||||
[NotNull] T content,
|
||||
[NotNull] JsonSerializerSettings serializerSettings,
|
||||
[NotNull] Encoding encoding)
|
||||
T content,
|
||||
JsonSerializerSettings serializerSettings,
|
||||
Encoding encoding)
|
||||
{
|
||||
if (content == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(content));
|
||||
}
|
||||
|
||||
if (serializerSettings == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(serializerSettings));
|
||||
}
|
||||
|
||||
if (encoding == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(encoding));
|
||||
}
|
||||
|
||||
var result = new JsonResult(content, serializerSettings);
|
||||
result.ContentType = new MediaTypeHeaderValue("application/json")
|
||||
{
|
||||
|
|
@ -323,8 +386,13 @@ namespace System.Web.Http
|
|||
/// <param name="location">The location to which to redirect.</param>
|
||||
/// <returns>A <see cref="RedirectResult"/> with the specified value.</returns>
|
||||
[NonAction]
|
||||
public virtual RedirectResult Redirect([NotNull] string location)
|
||||
public virtual RedirectResult Redirect(string location)
|
||||
{
|
||||
if (location == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(location));
|
||||
}
|
||||
|
||||
// This is how redirect was implemented in legacy webapi - string URIs are assumed to be absolute.
|
||||
return Redirect(new Uri(location));
|
||||
}
|
||||
|
|
@ -335,8 +403,13 @@ namespace System.Web.Http
|
|||
/// <param name="location">The location to which to redirect.</param>
|
||||
/// <returns>A <see cref="RedirectResult"/> with the specified value.</returns>
|
||||
[NonAction]
|
||||
public virtual RedirectResult Redirect([NotNull] Uri location)
|
||||
public virtual RedirectResult Redirect(Uri location)
|
||||
{
|
||||
if (location == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(location));
|
||||
}
|
||||
|
||||
string uri;
|
||||
if (location.IsAbsoluteUri)
|
||||
{
|
||||
|
|
@ -357,8 +430,18 @@ namespace System.Web.Http
|
|||
/// <param name="routeValues">The route data to use for generating the URL.</param>
|
||||
/// <returns>A <see cref="RedirectToRouteResult"/> with the specified values.</returns>
|
||||
[NonAction]
|
||||
public virtual RedirectToRouteResult RedirectToRoute([NotNull] string routeName, [NotNull] object routeValues)
|
||||
public virtual RedirectToRouteResult RedirectToRoute(string routeName, object routeValues)
|
||||
{
|
||||
if (routeName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(routeName));
|
||||
}
|
||||
|
||||
if (routeValues == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(routeValues));
|
||||
}
|
||||
|
||||
return new RedirectToRouteResult(routeName, routeValues)
|
||||
{
|
||||
UrlHelper = Url,
|
||||
|
|
@ -371,8 +454,13 @@ namespace System.Web.Http
|
|||
/// <param name="response">The HTTP response message.</param>
|
||||
/// <returns>A <see cref="ResponseMessageResult"/> for the specified response.</returns>
|
||||
[NonAction]
|
||||
public virtual ResponseMessageResult ResponseMessage([NotNull] HttpResponseMessage response)
|
||||
public virtual ResponseMessageResult ResponseMessage(HttpResponseMessage response)
|
||||
{
|
||||
if (response == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(response));
|
||||
}
|
||||
|
||||
return new ResponseMessageResult(response);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.AspNet.Mvc;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace System.Web.Http
|
||||
{
|
||||
|
|
@ -16,9 +15,14 @@ namespace System.Web.Http
|
|||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="BadRequestErrorMessageResult"/> class.</summary>
|
||||
/// <param name="message">The user-visible error message.</param>
|
||||
public BadRequestErrorMessageResult([NotNull] string message)
|
||||
public BadRequestErrorMessageResult(string message)
|
||||
: base(new HttpError(message))
|
||||
{
|
||||
if (message == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(message));
|
||||
}
|
||||
|
||||
Message = message;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,8 @@
|
|||
|
||||
#if DNXCORE50
|
||||
|
||||
using Microsoft.AspNet.Mvc;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Web.Http;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace System.Net.Http.Formatting
|
||||
{
|
||||
|
|
@ -24,8 +21,13 @@ namespace System.Net.Http.Formatting
|
|||
/// </summary>
|
||||
/// <param name="formatter">The formatter.</param>
|
||||
/// <param name="mediaType">The preferred media type. Can be <c>null</c>.</param>
|
||||
public ContentNegotiationResult([NotNull] MediaTypeFormatter formatter, MediaTypeHeaderValue mediaType)
|
||||
public ContentNegotiationResult(MediaTypeFormatter formatter, MediaTypeHeaderValue mediaType)
|
||||
{
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
_formatter = formatter;
|
||||
MediaType = mediaType;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,10 +57,25 @@ namespace System.Net.Http.Formatting
|
|||
/// <returns>The result of the negotiation containing the most appropriate <see cref="MediaTypeFormatter"/>
|
||||
/// instance, or <c>null</c> if there is no appropriate formatter.</returns>
|
||||
public virtual ContentNegotiationResult Negotiate(
|
||||
[NotNull] Type type,
|
||||
[NotNull] HttpRequestMessage request,
|
||||
[NotNull] IEnumerable<MediaTypeFormatter> formatters)
|
||||
Type type,
|
||||
HttpRequestMessage request,
|
||||
IEnumerable<MediaTypeFormatter> formatters)
|
||||
{
|
||||
if (type == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(type));
|
||||
}
|
||||
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (formatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatters));
|
||||
}
|
||||
|
||||
// Go through each formatter to compute how well it matches.
|
||||
var matches = ComputeFormatterMatches(type, request, formatters);
|
||||
|
||||
|
|
@ -96,10 +111,25 @@ namespace System.Net.Http.Formatting
|
|||
/// <param name="formatters">The set of <see cref="MediaTypeFormatter"/> objects from which to choose.</param>
|
||||
/// <returns>A collection containing all the matches.</returns>
|
||||
protected virtual Collection<MediaTypeFormatterMatch> ComputeFormatterMatches(
|
||||
[NotNull] Type type,
|
||||
[NotNull] HttpRequestMessage request,
|
||||
[NotNull] IEnumerable<MediaTypeFormatter> formatters)
|
||||
Type type,
|
||||
HttpRequestMessage request,
|
||||
IEnumerable<MediaTypeFormatter> formatters)
|
||||
{
|
||||
if (type == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(type));
|
||||
}
|
||||
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (formatters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatters));
|
||||
}
|
||||
|
||||
IEnumerable<MediaTypeWithQualityHeaderValue> sortedAcceptValues = null;
|
||||
|
||||
// Go through each formatter to find how well it matches.
|
||||
|
|
@ -159,8 +189,13 @@ namespace System.Net.Http.Formatting
|
|||
/// <param name="matches">The collection of matches.</param>
|
||||
/// <returns>The <see cref="MediaTypeFormatterMatch"/> determined to be the best match.</returns>
|
||||
protected virtual MediaTypeFormatterMatch SelectResponseMediaTypeFormatter(
|
||||
[NotNull] ICollection<MediaTypeFormatterMatch> matches)
|
||||
ICollection<MediaTypeFormatterMatch> matches)
|
||||
{
|
||||
if (matches == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(matches));
|
||||
}
|
||||
|
||||
// Performance-sensitive
|
||||
|
||||
var matchList = matches.AsList();
|
||||
|
|
@ -269,9 +304,19 @@ namespace System.Net.Http.Formatting
|
|||
/// </summary>
|
||||
/// <returns>The <see cref="Encoding"/> determined to be the best match.</returns>
|
||||
protected virtual Encoding SelectResponseCharacterEncoding(
|
||||
[NotNull] HttpRequestMessage request,
|
||||
[NotNull] MediaTypeFormatter formatter)
|
||||
HttpRequestMessage request,
|
||||
MediaTypeFormatter formatter)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
// If there are any SupportedEncodings then we pick an encoding
|
||||
var supportedEncodings = formatter.SupportedEncodings.ToList();
|
||||
if (supportedEncodings.Count > 0)
|
||||
|
|
@ -311,9 +356,19 @@ namespace System.Net.Http.Formatting
|
|||
/// A <see cref="MediaTypeFormatterMatch"/> indicating the quality of the match or null is no match.
|
||||
/// </returns>
|
||||
protected virtual MediaTypeFormatterMatch MatchAcceptHeader(
|
||||
[NotNull] IEnumerable<MediaTypeWithQualityHeaderValue> sortedAcceptValues,
|
||||
[NotNull] MediaTypeFormatter formatter)
|
||||
IEnumerable<MediaTypeWithQualityHeaderValue> sortedAcceptValues,
|
||||
MediaTypeFormatter formatter)
|
||||
{
|
||||
if (sortedAcceptValues == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(sortedAcceptValues));
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
foreach (MediaTypeWithQualityHeaderValue acceptMediaTypeValue in sortedAcceptValues)
|
||||
{
|
||||
var supportedMediaTypes = formatter.SupportedMediaTypes.ToList();
|
||||
|
|
@ -347,9 +402,19 @@ namespace System.Net.Http.Formatting
|
|||
/// A <see cref="MediaTypeFormatterMatch"/> indicating the quality of the match or null is no match.
|
||||
/// </returns>
|
||||
protected virtual MediaTypeFormatterMatch MatchRequestMediaType(
|
||||
[NotNull] HttpRequestMessage request,
|
||||
[NotNull] MediaTypeFormatter formatter)
|
||||
HttpRequestMessage request,
|
||||
MediaTypeFormatter formatter)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
if (request.Content != null)
|
||||
{
|
||||
var requestMediaType = request.Content.Headers.ContentType;
|
||||
|
|
@ -385,8 +450,13 @@ namespace System.Net.Http.Formatting
|
|||
/// True if not ExcludeMatchOnTypeOnly and accept headers with a q-factor bigger than 0.0 are present.
|
||||
/// </returns>
|
||||
protected virtual bool ShouldMatchOnType(
|
||||
[NotNull] IEnumerable<MediaTypeWithQualityHeaderValue> sortedAcceptValues)
|
||||
IEnumerable<MediaTypeWithQualityHeaderValue> sortedAcceptValues)
|
||||
{
|
||||
if (sortedAcceptValues == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(sortedAcceptValues));
|
||||
}
|
||||
|
||||
return !(ExcludeMatchOnTypeOnly && sortedAcceptValues.Any());
|
||||
}
|
||||
|
||||
|
|
@ -399,9 +469,19 @@ namespace System.Net.Http.Formatting
|
|||
/// A <see cref="MediaTypeFormatterMatch"/> indicating the quality of the match or null is no match.
|
||||
/// </returns>
|
||||
protected virtual MediaTypeFormatterMatch MatchType(
|
||||
[NotNull] Type type,
|
||||
[NotNull] MediaTypeFormatter formatter)
|
||||
Type type,
|
||||
MediaTypeFormatter formatter)
|
||||
{
|
||||
if (type == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(type));
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
// We already know that we do match on type -- otherwise we wouldn't even be called --
|
||||
// so this is just a matter of determining how we match.
|
||||
MediaTypeHeaderValue mediaType = null;
|
||||
|
|
@ -447,8 +527,13 @@ namespace System.Net.Http.Formatting
|
|||
/// <param name="headerValues">The header values to sort.</param>
|
||||
/// <returns>The sorted header values.</returns>
|
||||
protected virtual IEnumerable<StringWithQualityHeaderValue> SortStringWithQualityHeaderValuesByQFactor(
|
||||
[NotNull] ICollection<StringWithQualityHeaderValue> headerValues)
|
||||
ICollection<StringWithQualityHeaderValue> headerValues)
|
||||
{
|
||||
if (headerValues == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(headerValues));
|
||||
}
|
||||
|
||||
if (headerValues.Count > 1)
|
||||
{
|
||||
// Use OrderBy() instead of Array.Sort() as it performs fewer comparisons. In this case the comparisons
|
||||
|
|
|
|||
|
|
@ -25,6 +25,11 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
|||
|
||||
public void Apply(ControllerModel controller)
|
||||
{
|
||||
if (controller == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(controller));
|
||||
}
|
||||
|
||||
if (IsConventionApplicable(controller))
|
||||
{
|
||||
var newActions = new List<ActionModel>();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Microsoft.AspNet.Mvc.ApplicationModels;
|
||||
|
||||
|
|
@ -10,6 +11,11 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
|||
{
|
||||
public void Apply(ActionModel action)
|
||||
{
|
||||
if (action == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(action));
|
||||
}
|
||||
|
||||
if (IsConventionApplicable(action.Controller))
|
||||
{
|
||||
action.ActionConstraints.Add(new OverloadActionConstraint());
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
|||
{
|
||||
public void Apply(ActionModel action)
|
||||
{
|
||||
if (action == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(action));
|
||||
}
|
||||
|
||||
if (IsConventionApplicable(action.Controller))
|
||||
{
|
||||
var optionalParameters = new HashSet<string>();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Microsoft.AspNet.Mvc.ApplicationModels;
|
||||
|
||||
|
|
@ -17,6 +18,11 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
|||
|
||||
public void Apply(ControllerModel controller)
|
||||
{
|
||||
if (controller == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(controller));
|
||||
}
|
||||
|
||||
if (IsConventionApplicable(controller))
|
||||
{
|
||||
controller.RouteConstraints.Add(new AreaAttribute(_area));
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Net.Http.Formatting;
|
||||
using System.Text;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
||||
{
|
||||
|
|
@ -80,8 +79,13 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
|||
}
|
||||
|
||||
public static IEnumerable<KeyValuePair<string, string>> GetJQueryNameValuePairs(
|
||||
[NotNull] this FormDataCollection formData)
|
||||
this FormDataCollection formData)
|
||||
{
|
||||
if (formData == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formData));
|
||||
}
|
||||
|
||||
var count = 0;
|
||||
|
||||
foreach (var kv in formData)
|
||||
|
|
|
|||
|
|
@ -6,9 +6,7 @@ using System.Linq;
|
|||
using System.Xml;
|
||||
using System.Xml.Schema;
|
||||
using System.Xml.Serialization;
|
||||
using Microsoft.AspNet.Mvc;
|
||||
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||
using Microsoft.Framework.Internal;
|
||||
using ShimResources = Microsoft.AspNet.Mvc.WebApiCompatShim.Resources;
|
||||
|
||||
namespace System.Web.Http
|
||||
|
|
@ -34,9 +32,14 @@ namespace System.Web.Http
|
|||
/// <paramref name="message"/>.
|
||||
/// </summary>
|
||||
/// <param name="message">The error message to associate with this instance.</param>
|
||||
public HttpError([NotNull] string message)
|
||||
public HttpError(string message)
|
||||
: this()
|
||||
{
|
||||
if (message == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(message));
|
||||
}
|
||||
|
||||
Message = message;
|
||||
}
|
||||
|
||||
|
|
@ -47,9 +50,14 @@ namespace System.Web.Http
|
|||
/// <param name="includeErrorDetail">
|
||||
/// <c>true</c> to include the exception information in the error;<c>false</c> otherwise.
|
||||
/// </param>
|
||||
public HttpError([NotNull] Exception exception, bool includeErrorDetail)
|
||||
public HttpError(Exception exception, bool includeErrorDetail)
|
||||
: this()
|
||||
{
|
||||
if (exception == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(exception));
|
||||
}
|
||||
|
||||
Message = ShimResources.HttpError_GenericError;
|
||||
|
||||
if (includeErrorDetail)
|
||||
|
|
@ -71,9 +79,14 @@ namespace System.Web.Http
|
|||
/// <param name="includeErrorDetail">
|
||||
/// <c>true</c> to include exception messages in the error; <c>false</c> otherwise.
|
||||
/// </param>
|
||||
public HttpError([NotNull] ModelStateDictionary modelState, bool includeErrorDetail)
|
||||
public HttpError(ModelStateDictionary modelState, bool includeErrorDetail)
|
||||
: this()
|
||||
{
|
||||
if (modelState == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelState));
|
||||
}
|
||||
|
||||
if (modelState.IsValid)
|
||||
{
|
||||
throw new ArgumentException(ShimResources.HttpError_ValidModelState, nameof(modelState));
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ using Microsoft.AspNet.Http;
|
|||
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||
using Microsoft.AspNet.Mvc.WebApiCompatShim;
|
||||
using Microsoft.Framework.DependencyInjection;
|
||||
using Microsoft.Framework.Internal;
|
||||
using Microsoft.Framework.OptionsModel;
|
||||
using ShimResources = Microsoft.AspNet.Mvc.WebApiCompatShim.Resources;
|
||||
|
||||
|
|
@ -37,9 +36,19 @@ namespace System.Net.Http
|
|||
/// range.
|
||||
/// </returns>
|
||||
public static HttpResponseMessage CreateErrorResponse(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
[NotNull] InvalidByteRangeException invalidByteRangeException)
|
||||
this HttpRequestMessage request,
|
||||
InvalidByteRangeException invalidByteRangeException)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (invalidByteRangeException == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(invalidByteRangeException));
|
||||
}
|
||||
|
||||
var rangeNotSatisfiableResponse = request.CreateErrorResponse(
|
||||
HttpStatusCode.RequestedRangeNotSatisfiable,
|
||||
invalidByteRangeException);
|
||||
|
|
@ -67,10 +76,20 @@ namespace System.Net.Http
|
|||
/// <paramref name="statusCode"/>.
|
||||
/// </returns>
|
||||
public static HttpResponseMessage CreateErrorResponse(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] string message)
|
||||
string message)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (message == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(message));
|
||||
}
|
||||
|
||||
return request.CreateErrorResponse(statusCode, new HttpError(message));
|
||||
}
|
||||
|
||||
|
|
@ -92,11 +111,26 @@ namespace System.Net.Http
|
|||
/// <returns>An error response for <paramref name="exception"/> with error message <paramref name="message"/>
|
||||
/// and status code <paramref name="statusCode"/>.</returns>
|
||||
public static HttpResponseMessage CreateErrorResponse(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] string message,
|
||||
[NotNull] Exception exception)
|
||||
string message,
|
||||
Exception exception)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (message == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(message));
|
||||
}
|
||||
|
||||
if (exception == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(exception));
|
||||
}
|
||||
|
||||
var error = new HttpError(exception, includeErrorDetail: false) { Message = message };
|
||||
return request.CreateErrorResponse(statusCode, error);
|
||||
}
|
||||
|
|
@ -118,10 +152,20 @@ namespace System.Net.Http
|
|||
/// An error response for <paramref name="exception"/> with status code <paramref name="statusCode"/>.
|
||||
/// </returns>
|
||||
public static HttpResponseMessage CreateErrorResponse(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] Exception exception)
|
||||
Exception exception)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (exception == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(exception));
|
||||
}
|
||||
|
||||
return request.CreateErrorResponse(statusCode, new HttpError(exception, includeErrorDetail: false));
|
||||
}
|
||||
|
||||
|
|
@ -142,10 +186,20 @@ namespace System.Net.Http
|
|||
/// An error response for <paramref name="modelState"/> with status code <paramref name="statusCode"/>.
|
||||
/// </returns>
|
||||
public static HttpResponseMessage CreateErrorResponse(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] ModelStateDictionary modelState)
|
||||
ModelStateDictionary modelState)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (modelState == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelState));
|
||||
}
|
||||
|
||||
return request.CreateErrorResponse(statusCode, new HttpError(modelState, includeErrorDetail: false));
|
||||
}
|
||||
|
||||
|
|
@ -165,10 +219,20 @@ namespace System.Net.Http
|
|||
/// An error response wrapping <paramref name="error"/> with status code <paramref name="statusCode"/>.
|
||||
/// </returns>
|
||||
public static HttpResponseMessage CreateErrorResponse(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] HttpError error)
|
||||
HttpError error)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (error == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(error));
|
||||
}
|
||||
|
||||
return request.CreateResponse<HttpError>(statusCode, error);
|
||||
}
|
||||
|
||||
|
|
@ -188,8 +252,18 @@ namespace System.Net.Http
|
|||
/// <returns>
|
||||
/// A response wrapping <paramref name="value"/> with <see cref="System.Net.HttpStatusCode.OK"/> status code.
|
||||
/// </returns>
|
||||
public static HttpResponseMessage CreateResponse<T>([NotNull] this HttpRequestMessage request, T value)
|
||||
public static HttpResponseMessage CreateResponse<T>(this HttpRequestMessage request, T value)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
return request.CreateResponse<T>(HttpStatusCode.OK, value, formatters: null);
|
||||
}
|
||||
|
||||
|
|
@ -232,11 +306,16 @@ namespace System.Net.Http
|
|||
/// <param name="formatters">The set of <see cref="MediaTypeFormatter"/> objects from which to choose.</param>
|
||||
/// <returns>A response wrapping <paramref name="value"/> with <paramref name="statusCode"/>.</returns>
|
||||
public static HttpResponseMessage CreateResponse<T>(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
T value,
|
||||
IEnumerable<MediaTypeFormatter> formatters)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
var context = GetHttpContext(request);
|
||||
|
||||
if (formatters == null)
|
||||
|
|
@ -296,11 +375,26 @@ namespace System.Net.Http
|
|||
/// </param>
|
||||
/// <returns>A response wrapping <paramref name="value"/> with <paramref name="statusCode"/>.</returns>
|
||||
public static HttpResponseMessage CreateResponse<T>(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] T value,
|
||||
[NotNull] MediaTypeHeaderValue mediaType)
|
||||
T value,
|
||||
MediaTypeHeaderValue mediaType)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
if (mediaType == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(mediaType));
|
||||
}
|
||||
|
||||
var context = GetHttpContext(request);
|
||||
|
||||
// Get the default formatters from options
|
||||
|
|
@ -330,11 +424,26 @@ namespace System.Net.Http
|
|||
/// <param name="formatter">The formatter to use.</param>
|
||||
/// <returns>A response wrapping <paramref name="value"/> with <paramref name="statusCode"/>.</returns>
|
||||
public static HttpResponseMessage CreateResponse<T>(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] T value,
|
||||
[NotNull] MediaTypeFormatter formatter)
|
||||
T value,
|
||||
MediaTypeFormatter formatter)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
return request.CreateResponse(statusCode, value, formatter, (MediaTypeHeaderValue)null);
|
||||
}
|
||||
|
||||
|
|
@ -352,12 +461,27 @@ namespace System.Net.Http
|
|||
/// </param>
|
||||
/// <returns>A response wrapping <paramref name="value"/> with <paramref name="statusCode"/>.</returns>
|
||||
public static HttpResponseMessage CreateResponse<T>(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
[NotNull] T value,
|
||||
[NotNull] MediaTypeFormatter formatter,
|
||||
T value,
|
||||
MediaTypeFormatter formatter,
|
||||
string mediaType)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
var mediaTypeHeader = mediaType != null ? new MediaTypeHeaderValue(mediaType) : null;
|
||||
return request.CreateResponse(statusCode, value, formatter, mediaTypeHeader);
|
||||
}
|
||||
|
|
@ -376,12 +500,22 @@ namespace System.Net.Http
|
|||
/// </param>
|
||||
/// <returns>A response wrapping <paramref name="value"/> with <paramref name="statusCode"/>.</returns>
|
||||
public static HttpResponseMessage CreateResponse<T>(
|
||||
[NotNull] this HttpRequestMessage request,
|
||||
this HttpRequestMessage request,
|
||||
HttpStatusCode statusCode,
|
||||
T value,
|
||||
[NotNull] MediaTypeFormatter formatter,
|
||||
MediaTypeFormatter formatter,
|
||||
MediaTypeHeaderValue mediaType)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
}
|
||||
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
|
||||
var response = new HttpResponseMessage(statusCode)
|
||||
{
|
||||
RequestMessage = request,
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Net.Http;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
||||
{
|
||||
|
|
@ -14,8 +14,13 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
|||
private readonly HttpContext _httpContext;
|
||||
private HttpRequestMessage _httpRequestMessage;
|
||||
|
||||
public HttpRequestMessageFeature([NotNull] HttpContext httpContext)
|
||||
public HttpRequestMessageFeature(HttpContext httpContext)
|
||||
{
|
||||
if (httpContext == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(httpContext));
|
||||
}
|
||||
|
||||
_httpContext = httpContext;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using Microsoft.AspNet.Mvc;
|
||||
using Microsoft.Framework.Internal;
|
||||
using ShimResources = Microsoft.AspNet.Mvc.WebApiCompatShim.Resources;
|
||||
|
||||
namespace System.Web.Http
|
||||
|
|
@ -24,9 +22,14 @@ namespace System.Web.Http
|
|||
/// Initializes a new instance of the <see cref="HttpResponseException"/> class.
|
||||
/// </summary>
|
||||
/// <param name="response">The response message.</param>
|
||||
public HttpResponseException([NotNull] HttpResponseMessage response)
|
||||
public HttpResponseException(HttpResponseMessage response)
|
||||
: base(ShimResources.HttpResponseExceptionMessage)
|
||||
{
|
||||
if (response == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(response));
|
||||
}
|
||||
|
||||
Response = response;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Web.Http;
|
||||
using Microsoft.AspNet.Mvc.Filters;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
||||
{
|
||||
|
|
@ -18,12 +18,17 @@ namespace Microsoft.AspNet.Mvc.WebApiCompatShim
|
|||
// Return a high number by default so that it runs closest to the action.
|
||||
public int Order { get; set; } = int.MaxValue - 10;
|
||||
|
||||
public void OnActionExecuting([NotNull] ActionExecutingContext context)
|
||||
public void OnActionExecuting(ActionExecutingContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnActionExecuted([NotNull] ActionExecutedContext context)
|
||||
public void OnActionExecuted(ActionExecutedContext context)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(context));
|
||||
}
|
||||
|
||||
var httpResponseException = context.Exception as HttpResponseException;
|
||||
if (httpResponseException != null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ using System.Threading.Tasks;
|
|||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.AspNet.Mvc;
|
||||
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace System.Web.Http
|
||||
{
|
||||
|
|
@ -20,9 +19,14 @@ namespace System.Web.Http
|
|||
/// <param name="includeErrorDetail">
|
||||
/// <see langword="true"/> if the error should include exception messages; otherwise, <see langword="false"/>.
|
||||
/// </param>
|
||||
public InvalidModelStateResult([NotNull] ModelStateDictionary modelState, bool includeErrorDetail)
|
||||
public InvalidModelStateResult(ModelStateDictionary modelState, bool includeErrorDetail)
|
||||
: base(new HttpError(modelState, includeErrorDetail))
|
||||
{
|
||||
if (modelState == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(modelState));
|
||||
}
|
||||
|
||||
ModelState = modelState;
|
||||
IncludeErrorDetail = includeErrorDetail;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
using System.Net.Http;
|
||||
using Microsoft.AspNet.Mvc;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace System.Web.Http
|
||||
{
|
||||
|
|
@ -16,9 +15,14 @@ namespace System.Web.Http
|
|||
/// Initializes a new instance of the <see cref="ResponseMessageResult"/> class.
|
||||
/// </summary>
|
||||
/// <param name="response">The response message.</param>
|
||||
public ResponseMessageResult([NotNull] HttpResponseMessage response)
|
||||
public ResponseMessageResult(HttpResponseMessage response)
|
||||
: base(response)
|
||||
{
|
||||
if (response == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(response));
|
||||
}
|
||||
|
||||
Response = response;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
"url": "git://github.com/aspnet/mvc"
|
||||
},
|
||||
"compilationOptions": {
|
||||
"warningsAsErrors": false
|
||||
"warningsAsErrors": true
|
||||
},
|
||||
"dependencies": {
|
||||
"Microsoft.AspNet.WebUtilities": "1.0.0-*",
|
||||
|
|
@ -16,10 +16,6 @@
|
|||
"Microsoft.Framework.PropertyHelper.Sources": {
|
||||
"version": "1.0.0-*",
|
||||
"type": "build"
|
||||
},
|
||||
"Microsoft.Framework.NotNullAttribute.Sources": {
|
||||
"version": "1.0.0-*",
|
||||
"type": "build"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue