React to newly added api MediaTypeHeaderValue.Clone() #2569

This commit is contained in:
Kiran Challa 2015-06-26 09:49:32 -07:00
parent d2d4d1d1d3
commit 406a3853af
15 changed files with 58 additions and 26 deletions

View File

@ -179,8 +179,8 @@ namespace Microsoft.AspNet.Mvc
throw new InvalidOperationException(Resources.FormatOutputFormatterNoMediaType(GetType().FullName)); throw new InvalidOperationException(Resources.FormatOutputFormatterNoMediaType(GetType().FullName));
} }
// Clone the media type as we don't want it to affect the next request // Copy the media type as we don't want it to affect the next request
selectedMediaType = MediaTypeHeaderValue.Parse(selectedMediaType.ToString()); selectedMediaType = selectedMediaType.Copy();
var selectedEncoding = SelectCharacterEncoding(context); var selectedEncoding = SelectCharacterEncoding(context);
if (selectedEncoding == null) if (selectedEncoding == null)

View File

@ -17,7 +17,7 @@ namespace Microsoft.AspNet.Mvc
{ {
SupportedEncodings.Add(Encoding.UTF8); SupportedEncodings.Add(Encoding.UTF8);
SupportedEncodings.Add(Encoding.Unicode); SupportedEncodings.Add(Encoding.Unicode);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/plain")); SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/plain").CopyAsReadOnly());
} }
public override bool CanWriteResult(OutputFormatterContext context, MediaTypeHeaderValue contentType) public override bool CanWriteResult(OutputFormatterContext context, MediaTypeHeaderValue contentType)

View File

@ -46,9 +46,8 @@ namespace Microsoft.AspNet.Mvc
{ {
if (contentTypeHeader.Encoding == null) if (contentTypeHeader.Encoding == null)
{ {
// 1. Do not modify the user supplied content type // Do not modify the user supplied content type, so copy it instead
// 2. Parse here to handle parameters apart from charset contentTypeHeader = contentTypeHeader.Copy();
contentTypeHeader = MediaTypeHeaderValue.Parse(contentTypeHeader.ToString());
contentTypeHeader.Encoding = Encoding.UTF8; contentTypeHeader.Encoding = Encoding.UTF8;
encoding = Encoding.UTF8; encoding = Encoding.UTF8;

View File

@ -27,7 +27,7 @@ namespace Microsoft.AspNet.Mvc
{ {
ValidateContentType(contentType); ValidateContentType(contentType);
format = RemovePeriodIfPresent(format); format = RemovePeriodIfPresent(format);
_map[format] = MediaTypeHeaderValue.Parse(contentType.ToString()); _map[format] = contentType.CopyAsReadOnly();
} }
/// <summary> /// <summary>

View File

@ -28,8 +28,8 @@ namespace Microsoft.AspNet.Mvc
SupportedEncodings.Add(UTF8EncodingWithoutBOM); SupportedEncodings.Add(UTF8EncodingWithoutBOM);
SupportedEncodings.Add(UTF16EncodingLittleEndian); SupportedEncodings.Add(UTF16EncodingLittleEndian);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/json")); SupportedMediaTypes.Add(MediaTypeHeaderValues.ApplicationJson);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/json")); SupportedMediaTypes.Add(MediaTypeHeaderValues.TextJson);
} }
/// <summary> /// <summary>

View File

@ -29,8 +29,8 @@ namespace Microsoft.AspNet.Mvc
SupportedEncodings.Add(Encoding.UTF8); SupportedEncodings.Add(Encoding.UTF8);
SupportedEncodings.Add(Encoding.Unicode); SupportedEncodings.Add(Encoding.Unicode);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/json")); SupportedMediaTypes.Add(MediaTypeHeaderValues.ApplicationJson);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/json")); SupportedMediaTypes.Add(MediaTypeHeaderValues.TextJson);
} }
/// <summary> /// <summary>

View File

@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Mvc
// Clear all values and only include json-patch+json value. // Clear all values and only include json-patch+json value.
SupportedMediaTypes.Clear(); SupportedMediaTypes.Clear();
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/json-patch+json")); SupportedMediaTypes.Add(MediaTypeHeaderValues.ApplicationJsonPatch);
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -0,0 +1,19 @@
// 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 Microsoft.Net.Http.Headers;
namespace Microsoft.AspNet.Mvc
{
internal class MediaTypeHeaderValues
{
public static readonly MediaTypeHeaderValue ApplicationJson
= MediaTypeHeaderValue.Parse("application/json").CopyAsReadOnly();
public static readonly MediaTypeHeaderValue TextJson
= MediaTypeHeaderValue.Parse("text/json").CopyAsReadOnly();
public static readonly MediaTypeHeaderValue ApplicationJsonPatch
= MediaTypeHeaderValue.Parse("application/json-patch+json").CopyAsReadOnly();
}
}

View File

@ -73,9 +73,8 @@ namespace Microsoft.AspNet.Mvc
{ {
if (contentTypeHeader.Encoding == null) if (contentTypeHeader.Encoding == null)
{ {
// 1. Do not modify the user supplied content type // Do not modify the user supplied content type, so copy it instead
// 2. Parse here to handle parameters apart from charset contentTypeHeader = contentTypeHeader.Copy();
contentTypeHeader = MediaTypeHeaderValue.Parse(contentTypeHeader.ToString());
contentTypeHeader.Encoding = Encoding.UTF8; contentTypeHeader.Encoding = Encoding.UTF8;
} }
} }

View File

@ -48,9 +48,8 @@ namespace Microsoft.AspNet.Mvc
{ {
if (contentTypeHeader.Encoding == null) if (contentTypeHeader.Encoding == null)
{ {
// 1. Do not modify the user supplied content type // Do not modify the user supplied content type, so copy it instead
// 2. Parse here to handle parameters apart from charset contentTypeHeader = contentTypeHeader.Copy();
contentTypeHeader = MediaTypeHeaderValue.Parse(contentTypeHeader.ToString());
contentTypeHeader.Encoding = Encoding.UTF8; contentTypeHeader.Encoding = Encoding.UTF8;
encoding = Encoding.UTF8; encoding = Encoding.UTF8;

View File

@ -0,0 +1,16 @@
// 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 Microsoft.Net.Http.Headers;
namespace Microsoft.AspNet.Mvc.Xml
{
internal static class MediaTypeHeaderValues
{
public static readonly MediaTypeHeaderValue ApplicationXml
= MediaTypeHeaderValue.Parse("application/xml").CopyAsReadOnly();
public static readonly MediaTypeHeaderValue TextXml
= MediaTypeHeaderValue.Parse("text/xml").CopyAsReadOnly();
}
}

View File

@ -33,8 +33,8 @@ namespace Microsoft.AspNet.Mvc.Xml
SupportedEncodings.Add(UTF8EncodingWithoutBOM); SupportedEncodings.Add(UTF8EncodingWithoutBOM);
SupportedEncodings.Add(UTF16EncodingLittleEndian); SupportedEncodings.Add(UTF16EncodingLittleEndian);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.ApplicationXml);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.TextXml);
_serializerSettings = new DataContractSerializerSettings(); _serializerSettings = new DataContractSerializerSettings();

View File

@ -41,8 +41,8 @@ namespace Microsoft.AspNet.Mvc.Xml
SupportedEncodings.Add(Encoding.UTF8); SupportedEncodings.Add(Encoding.UTF8);
SupportedEncodings.Add(Encoding.Unicode); SupportedEncodings.Add(Encoding.Unicode);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.ApplicationXml);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.TextXml);
WriterSettings = writerSettings; WriterSettings = writerSettings;

View File

@ -32,8 +32,8 @@ namespace Microsoft.AspNet.Mvc.Xml
SupportedEncodings.Add(UTF8EncodingWithoutBOM); SupportedEncodings.Add(UTF8EncodingWithoutBOM);
SupportedEncodings.Add(UTF16EncodingLittleEndian); SupportedEncodings.Add(UTF16EncodingLittleEndian);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.ApplicationXml);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.TextXml);
WrapperProviderFactories = new List<IWrapperProviderFactory>(); WrapperProviderFactories = new List<IWrapperProviderFactory>();
WrapperProviderFactories.Add(new SerializableErrorWrapperProviderFactory()); WrapperProviderFactories.Add(new SerializableErrorWrapperProviderFactory());

View File

@ -40,8 +40,8 @@ namespace Microsoft.AspNet.Mvc.Xml
SupportedEncodings.Add(Encoding.UTF8); SupportedEncodings.Add(Encoding.UTF8);
SupportedEncodings.Add(Encoding.Unicode); SupportedEncodings.Add(Encoding.Unicode);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.ApplicationXml);
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/xml")); SupportedMediaTypes.Add(MediaTypeHeaderValues.TextXml);
WriterSettings = writerSettings; WriterSettings = writerSettings;